我尝试使用Spring和CommonsMultipartResolver上传大文件(非常类似于this related topic
上传即使是小文件(少量Kb)的结果如下:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this
as a fallback.
Fri Mar 02 23:54:59 MSK 2018
There was an unexpected error (type=Bad Request, status=400).
Required request part 'file' is not present
这是我的UploadController.java" / upload"方法代码:
@PostMapping(value = "/upload", consumes =
MediaType.MULTIPART_FORM_DATA_VALUE)
public String singleFileUpload(@RequestParam("file")
MultipartFile file,
RedirectAttributes redirectAttributes){
if (file.isEmpty()){
redirectAttributes.addFlashAttribute("message", "Файл для загрузки не выбран. Выберите файл в диалоге");
return "redirect:/files";
}
try {
BufferedOutputStream outputStream = new BufferedOutputStream(
new FileOutputStream(
new File(UPLOAD_LOCATION + "\\",
file.getOriginalFilename())));
outputStream.write(file.getBytes());
outputStream.flush();
outputStream.close();
String.format("Файл %s успешно загружен", file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/files";
}
我的表单代码:
<div class="form-group">
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" class="file" name="file" />
<small id="fileHelp" class="form-text text-muted">Выберите файл для загрузки в файловый каталог приложения. После загрузки файл автоматически появится в этом списке. </small>
<button type="submit" class="btn btn-default">Загрузить на сервер</button>
</form>
</div>
&#13;
和注释bean定义:
@Bean
public MultipartResolver multipartResolver() { CommonsMultipartResolver
multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(10 * 1024 * 1024 * 1024); // 10 GB
multipartResolver.setMaxUploadSizePerFile(3 * 1024 * 1024 * 1024); // 3 GB
return multipartResolver;
}
和application.properties:
spring.http.multipart.max-file-size=3000MB
spring.http.multipart.max-request-size=3000MB
我有一个正确的属性名称&#34; file&#34;在表单输入和@RequestParam
值,我也在@PostMapping
注释写了一个MediaType,但它仍然无法工作。
此外,我注意到,当我没有定义CommonsMultipartResolver bean时,上传工作正常,但只有少于300 Mb的文件......
我做错了什么?
答案 0 :(得分:0)
尝试将以下属性添加到您的.properties文件中:
multipart.enabled=true