2016-08-29 19 views
0

vertx.ioを使用したマルチパートファイルアップロード用のコードを書いています。Vertx.ioフレームワークを使用したマルチパートファイルアップロード用ポストAPIの作成

春のブートで私のコードは以下の通りです。

Router router = Router.router(vertx); 

// Enable multipart form data parsing 
router.post("/upload").handler(BodyHandler.create() 
    .setUploadsDirectory(FILE_LOCATION)); 

// handle the form 
router.post("/upload").handler(ctx -> { 
    // in your example you only handle 1 file upload, here you can handle 
    // any number of uploads 
    for (FileUpload f : ctx.fileUploads()) { 
    // do whatever you need to do with the file (it is already saved 
    // on the directory you wanted... 
    System.out.println("Filename: " + f.fileName()); 
    System.out.println("Size: " + f.size()); 
    } 

    ctx.response().end(); 
}); 

は、より多くの例については、必ずvertx-examplesレポを見ることができます:私はここでは同じですが、中にvert.xあるvertex.io

@RequestMapping(value = "/upload", headers=("content-type=multipart/*") ,method = RequestMethod.POST) 
public ImportExportResponse upload(@RequestParam("file") MultipartFile inputFile){ 
    log.info(" upload service method starts "); 
    ImportExportResponse response = new ImportExportResponse(); 
    FileOutputStream fileOutputStream=null; 
    try{ 
     File outputFile = new File(FILE_LOCATION+inputFile.getOriginalFilename()); 
     fileOutputStream = new FileOutputStream(outputFile); 
     fileOutputStream.write(inputFile.getBytes()); 
     fileOutputStream.close(); 

     response.setStatus(ImportExportConstants.ResponseStatus.SUCCESS.name()); 
     response.setErrorMessage(EMPTY); 

    }catch (Exception e) { 
     log.error("Exception while upload the file . "+e.getMessage()); 
     response.setStatus(ImportExportConstants.ResponseStatus.ERROR.name()); 
     response.setErrorMessage(errorMap.get(SYSTEM_ERROR_CODE));   
    } 
    log.info(" upload service method ends. file is copied to a temp folder "); 
    return response; 
} 

答えて

2

で同様の書きたいです。

+0

ありがとうございました。ファイルをアップロードしてディレクトリを変更することができましたが、現在どのようにファイルサイズが5MBを超えないように制約を追加できますか? 5 MB以上の場合、ファイルをディレクトリに保存しないでください。 – user3352615

+1

そのために.setBodyLimit()を使用してください –

+0

私はファイルをアップロードしています。このメソッドのfileUpload.uploadedFileName();私は完全な場所を持つ完全なパスを与えています。例:C:\ Users \\ fileToBeStored \ baf1005d-d000-4e8f-b590-f97805b3969c。私はbaf1005d-d000-4e8f-b590-f97805b3969cを返すべきである完全なディレクトリパスの代わりにしたい。どうやってやるの ? – user3352615

関連する問題