一.问题描述
在做一个带有文件上传的编辑功能,我的思路是首先判断文件是否为重新选择了,如果没有重新选择就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