如何解决前端上传Formdata中的file为[object Object]的问题
作者:ZhongruiRao
文件上传是Web开发中常见的功能之一,下面这篇文章主要给大家介绍了关于如何解决前端上传Formdata中的file为[object Object]问题的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
项目场景:
- 前端:Vue3 + ts + elementui plus
- 后端:springboot
问题描述
在前端上传form表单时,上传的数据为[object Object]
同时后端报错:
org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present
原因分析:
后端代码:
public ResponseData<?> importGeoData(@RequestParam("parentAdcode") @NotNull String parentAdcode, @RequestParam("file") MultipartFile file) throws Exception { GeoUploadRequest uploadRequest = new GeoUploadRequest(); uploadRequest.setParentAdcode(parentAdcode); uploadRequest.setFile(file); return getResult(geoDataService.importGeoData(uploadRequest)); }
由于apifox中上传正常,所以排除后端问题,检查前端代码
查看前端代码:
const file = uploadFileList.value[i]; console.log(file) formData2.append('file', file); formData2.append('parentAdcode', formData.parentAdcode); importObjects(formData2).then(res=>{ ElMessage.success('导入成功') })
这里打印的file:
发现file内部还有一个raw属性,我们要上传的是这个raw里面的内容
解决方案:
更改前端代码如下:
const file = uploadFileList.value[i]; formData2.append('file', toRaw(file.raw)); formData2.append('parentAdcode', formData.parentAdcode); importObjects(formData2).then(res=>{ ElMessage.success('导入成功') })
再次查看payload:
发送的数据正确,同时后端正确处理请求
总结
到此这篇关于如何解决前端上传Formdata中的file为[object Object]问题的文章就介绍到这了,更多相关前端上传Formdata中file为[object Object]内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!