簡體   English   中英

Spring Thymeleaf所需的請求部分“文件”不存在

[英]Spring Thymeleaf Required request part 'file' is not present

我正在嘗試使用Spring和CommonsMultipartResolver上傳大文件(與該相關主題非常相似

上載一個很小的文件(幾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> 

和注解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

我在表單輸入處具有正確的屬性名稱“文件”,並具有@RequestParam值,我還在@PostMapping批注中編寫了MediaType,但仍然無法正常工作。 另外,我注意到,當我未定義CommonsMultipartResolver bean時,上傳有效,但僅適用於小於300 Mb的文件...

我做錯了什么?

嘗試將以下屬性添加到您的.properties文件中:

multipart.enabled=true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM