Required request part ‘file‘ is not present

一.问题描述
在做一个带有文件上传的编辑功能,我的思路是首先判断文件是否为重新选择了,如果没有重新选择就file字段就传一个null,否则就正常传(这样就可以避免重复的保存文件导致的存储资源浪费),但是这样的话后台一直报错Required request part ‘file’ is not present

前端代码:

function submitHandler() {
        if ($.validate.form()) {
            // $.operate.save(prefix + "/edit", $('#form-subject-edit').serialize());
            var formData = new FormData();
            formData.append("id", $("[type=hidden]").val())
            formData.append('subjectName', $("[name=subjectName]").val());
            formData.append('subjectDesc', $("[name=subjectDesc]").val());
            formData.append('remark', $("[name=remark]").val());
            formData.append('subjectIfEnable', $("[name=subjectIfEnable]:checked").val());
            if (document.getElementById("subjectBanner").files[0] != undefined) {
                formData.append('file', $('#subjectBanner')[0].files[0]);
            } else {
                formData.append('file', null);
            }
            $.ajax({
                url: prefix + "/edit",
                type: 'post',
                cache: false,
                data: formData,
                processData: false,
                contentType: false,
                dataType: "json",
                success: function (result) {
                    $.operate.successCallback(result);
                }
            });
        }
 

后台:

/**
     * 修改保存专题管理
     */
    @RequiresPermissions("subject:subject:edit")
    @Log(title = "专题管理", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(@RequestParam("file") MultipartFile file, CcSubject ccSubject) throws IOException {
        if (file != null) {
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath();
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            ccSubject.setSubjectBanner(fileName);
        }
        return toAjax(ccSubjectService.updateCcSubject(ccSubject));
    }
 

二.问题分析
首先在前台通过打断点分析,确定前台没有问题,字段确实是file,值为null,说明前台没有问题

只能是后台的问题了

通过百度,有人说是配置spring.servlet.multipart.enabled=false,这个配置的意思是否启用分段上传支持,但是问题依旧存在

然后继续百度,发现许多人都说是前台的name和后台接收的名称不对应,检查了发现也是对应

三.问题解决
最后将该参数设置成了非必须的,然后就通过了

public AjaxResult editSave(@RequestParam(value = "file", required = false) MultipartFile file, CcSubject ccSubject) throws IOException {

四.总结

required的默认值是true,如果不传就会出错

————————————————
版权声明:本文为CSDN博主「Antg」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44745147/article/details/120087484

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值