SSM框架文件上傳 HTTP Status 400 – Bad Request: Required request part 'file' is not present

最近做SSM文件上傳,遇到了這樣的問題:
在這裏插入圖片描述
前臺代碼如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--添加一個enctype="multipart/form-data"--%>
<form action="${con}/file/upload" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

後臺代碼如下:

@Controller
@RequestMapping("/file")
public class FileController {

    private static String uploadPath = "F:/測試" + File.separator;

    // 入參就可以代表上傳的文件
    @RequestMapping("/upload")
    public String upload(@RequestParam("file")MultipartFile multipartFile, Model model){
        // 1 判斷
        if (multipartFile != null && !multipartFile.isEmpty()) {
            // 不空才傳
            // 2 獲取原始的文件名
            String originalFilename = multipartFile.getOriginalFilename();
            // 3 先截取原文件的文件名前綴,不帶後綴
            String fileNamePrefix = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            // 4 加工處理文件名,將文件名+時間戳
            String newFileNamePrefix = fileNamePrefix + new Date().getTime();
            // 5 得到新文件名
            String newFileName = newFileNamePrefix + originalFilename.substring(originalFilename.lastIndexOf("."));
            // 6 構建文件對象
            File file = new File(uploadPath + newFileName);
            // 7 上傳
            try {
                multipartFile.transferTo(file);
                model.addAttribute("fileName",newFileName);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "uploadSuccess";
    }

xml的文件上傳配置:

<!--文件上傳解析器-->
 <!--id必須是multipartResolver-->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <!--定義文件上傳的總大小 單位是bytes-->
     <property name="maxUploadSize" value="102400000000"/>
     <!--指定上傳的編碼-->
     <property name="defaultEncoding" value="UTF-8"/>
     <!--單文件上傳大小-->
     <property name="maxUploadSizePerFile" value="1024000000"/>

 </bean>

我在網上搜了一天,基本上問題都是出在這三個地方。問題一般如下:

  • 前臺的name 與 後臺的 RequestParam的名字不一致
  • 忘了放入文件上傳的配置,而且id一定是multipartResolver

但是我的問題確極其特別,我查了很多,都不對。於是找同學借了個文件上傳的demo測試,發現上面這三處都是一模一樣的,但是他的demo可以上傳成功,於是我就複製了他的web.xml,發現問題出現在web.xml上。
真正的問題出現在下面這個代碼裏:

 <multipart-config>
            <max-file-size>100000000000000</max-file-size>
        </multipart-config>

原本這個也是防止文件上傳的文件過大所做的一個處理,但是無論上傳的文件多小,它總是攔截上傳的文件,於是將這個代碼註釋掉,問題解決。
分享一下這個錯誤,希望廣大網友能少一些煩惱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章