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>

原本这个也是防止文件上传的文件过大所做的一个处理,但是无论上传的文件多小,它总是拦截上传的文件,于是将这个代码注释掉,问题解决。
分享一下这个错误,希望广大网友能少一些烦恼。

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