使用Spring MVC进行文件上传,但不在控制器方法中添加任何其他参数
问题描述:
我正在使用spring boot 2.我的新任务是文件上传。我已经做到了。但是我被要求在没有向@RequestParam(“files”)MultipartFile文件[]等控制器方法中添加额外参数的情况下执行此操作。我想从请求中得到这个,而不是添加这个参数。使用Spring MVC进行文件上传,但不在控制器方法中添加任何其他参数
我该如何解决这个问题?
我正在添加我目前的代码。
@RequestMapping(value="/uploadMultipleFiles", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("files") MultipartFile files[]){
try {
String filePath="c:/temp/kk/";
StringBuffer result=new StringBuffer();
byte[] bytes=null;
result.append("Uploading of File(s) ");
for (int i=0;i<files.length;i++) {
if (!files[i].isEmpty()) {
bytes = files[i].getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(filePath+files[i].getOriginalFilename())));
stream.write(bytes);
stream.close();
result.append(files[i].getOriginalFilename() + " Ok. ") ;
}
else
result.append(files[i].getOriginalFilename() + " Failed. ");
}
return result.toString();
} catch (Exception e) {
return "Error Occured while uploading files." + " => " + e.getMessage();
}
}
答
您可以从HttpRequest都有文件:
@RequestMapping(value="/uploadMultipleFiles", method=RequestMethod.POST)
public String handleFileUpload(HttpRequest request){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> yourFiles = multipartRequest.getFileMap();
return "All is Ok!";
}
答
我的示例代码。
@RequestMapping(value = "/multiple/upload", method = RequestMethod.POST)
public @ResponseBody String test(@RequestParam(value = "files[]") List<MultipartFile> files,
HttpServletRequest req) {
MultipartFileWriter writer = new MultipartFileWriter();
String folderPath = "/file/";
for (MultipartFile file : files) {
writer.writeFile(file, folderPath, req);
}
return "success";
}
所以你想让它更复杂而不是更简单... –