[WARNING] Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'myFile' is not present]已解決+1


Required request part 'myFile' is not present
所需的請求部分“myFile”不存在

開發環境:Java,Maven,Spring

問題描述:我仔細的盯着前端編寫的表單還有后端接收的參數后,發現我並沒有寫錯參數名稱,按道理應該可以獲取到所謂的“myFile”參數。問題相關代碼如下:

</form>
<h1>文件上傳</h1>
<form action="/file/upload.demo" method="post" enctype="multipart/form-data">
    請選擇文件:<input type="file" name="myFile"/><br>
    <button type="submit">上傳文件</button>
</form>
@Controller
@RequestMapping("file")
public class FileUploadController {
    @RequestMapping(value = "upload.demo",method = RequestMethod.POST)
    public String upload(@RequestParam("myFile") MultipartFile file, HttpServletRequest req) throws IOException {
        String originalFilename = file.getOriginalFilename();
        System.out.println("originalFilename = " + originalFilename);
        String randomPrefix = UUID.randomUUID().toString().replace("-", "");
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        String dirPath = req.getServletContext().getRealPath("/upload-files");
        String savePath = dirPath + "\\" + randomPrefix + suffix;
        //文件存儲到服務器
        file.transferTo(new File(savePath));
        System.out.println("upload success ! savePath = " + savePath);
        return "jsp-view/ok";
    }
}

於是上網查找了相關問題,有人說用spring boot不要在容器配置文件中聲明CommonsMultipartResolver的bean實例。

結合我自己的情況,我使用的是spring mvc,確實在容器中聲明了這個對象

<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
  • 於是我直接注釋掉了這個bean重新啟動項目,發現報錯沒有改變

思考了一下最終解決了,問題還是出在這個bean上

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

把id改為multipartResolver后就可以!

推測原因是spring mvc是自動調用名為multipartResolver的對象,所以必須使用這個名稱。

至於為什么起這個名稱大概是因為容器是按照MultipartResolver這個接口來調用此對象的。

目前初學spring所以不想看源碼,如果有知道的朋友可以告訴我鴨~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM