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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部