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;
}
ありがとうございました。ファイルをアップロードしてディレクトリを変更することができましたが、現在どのようにファイルサイズが5MBを超えないように制約を追加できますか? 5 MB以上の場合、ファイルをディレクトリに保存しないでください。 – user3352615
そのために.setBodyLimit()を使用してください –
私はファイルをアップロードしています。このメソッドのfileUpload.uploadedFileName();私は完全な場所を持つ完全なパスを与えています。例:C:\ Users \\ fileToBeStored \ baf1005d-d000-4e8f-b590-f97805b3969c。私はbaf1005d-d000-4e8f-b590-f97805b3969cを返すべきである完全なディレクトリパスの代わりにしたい。どうやってやるの ? – user3352615