簡體   English   中英

spring mvc 中不存在所需的 MultipartFile 參數“文件”

[英]Required MultipartFile parameter 'file' is not present in spring mvc

我正在嘗試添加將圖片上傳到我的 spring mvc 應用程序的功能。

jsp 部分:

...
<form method="POST"  action="uploadImage" enctype="multipart/form-data">
                <div class="load-line">
                    <input type="file" class="file"/>
                    <input type="submit" value="Upload">
...

配置:

... 
<bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
...

controller:

 @RequestMapping(value="/member/createCompany/uploadImage", method=RequestMethod.POST)
    public @ResponseBody String handleFileUpload(
            @RequestParam("file") MultipartFile file){
        String name = "image_name";
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                BufferedOutputStream stream =
                        new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
                stream.write(bytes);
                stream.close();
                return "You successfully uploaded " + name + " into " + name + "-uploaded !";
            } catch (Exception e) {
                return "You failed to upload " + name + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + name + " because the file was empty.";
        }
    }

選擇圖片后,我單擊上傳並看到錯誤消息:

HTTP Status 400 - Required MultipartFile parameter 'file' is not present

我錯了什么?

你沒有指定name屬性, @RequestParam("textFile")需要名稱,

 <input type="file" class="file" name="textFile"/>

將name屬性添加到“file”輸入標記

<input type="file" class="file" name="file"/>

對於那些無法找到合適解決方案的人,請不要忘記添加

spring.http.multipart.enabled=true

到您的配置文件

對於 Springboot:如果您的應用程序不使用 spring-boot-starter-web 和 spring-boot-starter-data-rest,而是使用“spring-boot-starter-webflux”,那么您將收到錯誤“HTTP Status 400 - 當您在 POST 請求中使用“@RequestParam("file") MultipartFile 文件”時,所需的 MultipartFile 參數“文件”不存在”。

由於 webflux 是一個響應式庫,因此不支持 MultipartFile。

您需要按照此鏈接以響應式編程方式上傳表單數據。 https://github.com/entzik/reactive-spring-boot-examples/blob/master/src/main/java/com/thekirschners/springbootsamples/reactiveupload/ReactiveUploadResource.java

我已經嘗試了很多。 對於僅 webflux 的應用程序,上述解決方案單獨有效。

暫無
暫無

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

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