1

업로드 된 파일을 java의 특정 위치에 저장하려고합니다. 내가 a.pdf을 업로드하면이 파일을 "/home/rahul/doc/upload/"에 저장하고 싶습니다. 스택 오버플로에 대한 몇 가지 질문과 답변을 살펴 보았지만 솔루션에 만족하지 않습니다.업로드 된 다중 PDF 파일을 Java의 특정 위치에 저장하는 방법은 무엇입니까?

나는 Play Framework 2.1.2으로 일하고 있습니다. 나는 servlet으로 일하고 있지 않습니다.

업로드 중이지만 temp 디렉토리에 파일을 저장하고 있지만 임시 파일이 아닌 폴더에 해당 파일 저장소를 넣으 려합니다. 임시 파일이 아닌 폴더에 .pdf 같은 파일을 넣고 싶습니다.

public static Result upload() { 
    MultipartFormData body = request().body().asMultipartFormData(); 
    FilePart filePart1 = body.getFile("filePart1"); 
    File newFile1 = new File("path in computer"); 
    File file1 = filePart1.getFile(); 
    InputStream isFile1 = new FileInputStream(file1); 
    byte[] byteFile1 = IOUtils.toByteArray(isFile1); 
    FileUtils.writeByteArrayToFile(newFile1, byteFile1); 
    isFile1.close(); 

} 

그러나이 솔루션에 만족하지 않고 여러 개의 doc 파일을 업로드하고 있습니다.

예 : 내가 그것을 임시 디렉토리 및 파일을 저장하고 다음 업로드 후 1 문서의 ab.docx을 업로드하는 것은 이것이다 :

uploaded file as temp

을 그리고 위치이입니다입니다 : /tmp/multipartBody5886394566842144137asTemporaryFile

하지만 난이 원하는 : /upload/ab.docx

을 이 문제를 해결할 수있는 해결책을 알려주십시오.

public static Result upload() { 
    Http.MultipartFormData body = request().body().asMultipartFormData(); 
    FilePart upload = body.getFile("picture"); 

    if (upload != null) { 
     String targetPath = "/your/target/upload-dir/" + upload.getFilename(); 
     upload.getFile().renameTo(new File(targetPath)); 
     return ok("File saved in " + targetPath); 
    } else { 
     return badRequest("Something Wrong"); 
    } 
} 

가 BTW 당신은 ​​몇 가지 검사를 구현해야합니다 :

답변

2

모든 것은 당신이 당신의 업로드 폴더에 임시 파일을 renameTo해야 할 마지막 단계로 올바른을, 당신은뿐만 간단 스트림 주위를 연주 할 필요가 없습니다 오류 및/또는 덮어 쓰기를 방지하기 위해 targetPath가없는 경우 같은 이름의 파일이 이미 존재하는 경우 일반적인 방법은 내가 그냥 완료

0

a.pdf, a_01.pdf, a_02.pdf으로 파일을 저장해야합니다 a.pdf 세 번 보내는 예를 들어, 파일 이름을 증가한다. 내 솔루션이 잘 작동합니다.

여러 파일을 업로드 내 솔루션입니다 :

public static Result up() throws IOException{ 

      MultipartFormData body = request().body().asMultipartFormData(); 
       List<FilePart> resourceFiles=body.getFiles(); 
       InputStream input; 
       OutputStream output; 
       File part1; 
       String prefix,suffix; 
       for (FilePart picture:resourceFiles) { 

       part1 =picture.getFile(); 
        input= new FileInputStream(part1); 
        prefix = FilenameUtils.getBaseName(picture.getFilename()); 
        suffix = FilenameUtils.getExtension(picture.getFilename()); 

        part1=new File("/home/rahul/Documents/upload",prefix+"."+suffix); 
        part1.createNewFile(); 

        output = new FileOutputStream(part1); 
        IOUtils.copy(input, output); 
        Logger.info("Uploaded file successfully saved in " + part1.getAbsolutePath()); 

       } 
관련 문제