springboot 上传文件 中过滤器配置*.do后缀 无法上传的问题

本文介绍了解决Spring Boot应用中文件上传失败的问题。通过调整前端jQuery AJAX设置及后端配置,最终实现了文件的有效上传,并记录了整个调试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在使用spring boot做上传文件的功能, 前端使用的jquery 配合ajax去提交,后台使用springmvc mulitpartFile 去接受文件,发现文件一直获取不到,一直为null,尝试了各种前端解决方法,后台加了@requestparam, @requestbody 等都还是无法获取到文件,在各种尝试后,决定关掉过滤器,发现接受到了,我的过滤器里面过滤了*.do 这种路径请求,难道也会过滤文件?

现在还是个疑惑。。 于是尝试不关掉过滤器也能上传文件,多次尝试后,加了一个配置 就可以了,这个用的第三方的文件解析器, 记录一次爬坑经历

前端代码:

<form  id="fileUploadForm" enctype="multipart/form-data" method="post" οnsubmit="return false">
    <input id ="img" type="file" name="img"/><br/><br/>
    <input type="submit" value="Submit" id="btnSubmit" οnclick="test1()"/>
</form>
function test1() {
    var form = new FormData(document.getElementById("fileUploadForm"));
    $.ajax({
        type: "POST",
        url:"/api/v1/testFile.do",
        data:form,
        processData: false,
        contentType: false,
        success: function (data) {
            alert("success");
        }
    })
}

后端代码:

@RestController
public class TestFileController {
    private Logger log = LoggerFactory.getLogger(TestFileController.class);

    @PostMapping("/api/v1/testFile")
    public JsonData uploadFile( @RequestParam("img") MultipartFile img) {
        log.info("username-->" + "-" + img.getOriginalFilename());
        return JsonData.buildSuccess();
    }


}

springboot新增配置:

@Configuration
public class UploadConfig {
    //显示声明CommonsMultipartResolver为mutipartResolver
    @Bean(name = "multipartResolver")
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        //resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
        resolver.setResolveLazily(true);
        resolver.setMaxInMemorySize(40960);
        //上传文件大小 5M 5*1024*1024
        resolver.setMaxUploadSize(5 * 1024 * 1024);
        return resolver;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值