【发布时间】:2015-11-12 10:10:30
【问题描述】:
我有以下控制器方法:
@RequestMapping(value = { "/member/uploadExternalImage",
"/member/uploadExternalImage" }, method = RequestMethod.GET)
public String handleFileUpload(@RequestParam String url, RedirectAttributes redirectAttributes
) throws IOException {
byte[] binaryFile = IOUtils.toByteArray(
new URL(url)
.openStream());
File file = File.createTempFile("tmp", ".txt", new File(System.getProperty("user.dir")));
FileUtils.writeByteArrayToFile(file, binaryFile);
redirectAttributes.addFlashAttribute(file);
return "redirect:/member/uploadImage";
}
在这里我得到外部链接,通过这个链接下载文件并将其重定向到另一个控制器:
看起来像这样:
@RequestMapping(value = { "/member/createCompany/uploadImage",
"/member/uploadImage" })
@ResponseBody
public ResponseEntity<String> handleFileUpload(@Validated MultipartFileWrapper file,
BindingResult result, Principal principal) throws IOException {
MultipartFileWrapper:
@Component
public class MultipartFileWrapper {
@Extensions(imageFormats = {".jpg",".png",".gif",".bmp"}, videoFormats = {".mp4",".mov"})
MultipartFile multipartFile;
...
}
但是重定向没有正确发生。它在验证时中断。接受的 multipartFile 为 null。
如何解决?
附言
我试过了
File file = File.createTempFile("tmp", ".jpg", new File(System.getProperty("user.dir")));
FileUtils.writeByteArrayToFile(file, binaryFile);
FileItem fileItem = new DiskFileItem("trololo", ".jpg", false, "fileName", 1024_000_0, file);
fileItem.getOutputStream();
fileItem.getInputStream();
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
MultipartFileWrapper wrapper = new MultipartFileWrapper();
wrapper.setMultipartFile(multipartFile);
redirectAttributes.addFlashAttribute(wrapper);
return "redirect:/member/uploadImage";
它重定向正确但大小等于0
【问题讨论】:
标签: java file spring-mvc redirect multipart