向API提交含Excel文件的对象遇[object Object]错误,求解决方案
解决FormData发送对象出现[object Object]的问题
问题排查方向
- 确认JSON序列化结果:
JSON.stringify(info)是否生成了有效的JSON字符串,而非异常内容。可以在代码里打印序列化后的结果,检查是否存在无法序列化的内容(比如函数、循环引用、Symbol类型值)。 - 检查FormData字段内容:通过
formData.get('properties')或遍历FormData条目,确认properties字段是JSON字符串,而非[object Object]。 - 修正文件上传逻辑:如果
fileList是数组(比如UI组件返回的文件列表),直接append数组会导致异常,需要取单个文件的原始对象(如antd Upload组件的file.originFileObj)。 - 后端解析逻辑:后端需要明确将
properties字段的字符串内容反序列化为对象,不能直接按普通字符串处理。
修改后的代码示例
const formData = new FormData(); onSubmit={(values) => { // 处理文件:适配UI组件返回的fileList(以antd Upload为例) if (fileList?.length) { // 单个文件上传 formData.append("file", fileList[0].originFileObj); // 多个文件上传的话,改用file[]作为字段名 // fileList.forEach(file => formData.append("file[]", file.originFileObj)); } const info = { id: values.id, brandId: values.brandId, brandName: values.brandName, campaignDurationDTO: values.campaignDurationDTO, favoriteStructures: values.favoriteStructures, status: "not_active", geographicalInfoDTO: values.geographicalInfoDTO, campaignCode: values.campaignCode, phase: values.phase, reportScheduleType: values.reportScheduleType, }; // 序列化并验证结果 const infoJson = JSON.stringify(info); console.log("序列化后的对象:", infoJson); formData.append("properties", infoJson); // 调试FormData内容 for (const [key, value] of formData.entries()) { console.log(`${key}:`, value); } props.onSubmit?.("planos", formData, true); }}
后端解析示例(Node.js/Express)
如果后端用Node.js,需要用multer处理FormData,再手动解析JSON字符串:
const multer = require('multer'); const upload = multer(); app.post('/your-api-path', upload.single('file'), (req, res) => { try { // 将properties字段反序列化为对象 const properties = JSON.parse(req.body.properties); const uploadedFile = req.file; // 后续业务逻辑处理 res.status(200).json({ success: true, data: properties }); } catch (err) { res.status(400).json({ success: false, message: 'properties字段解析失败' }); } });
注意事项
- 发送FormData时,不要手动设置
Content-Type: multipart/form-data,浏览器会自动生成包含boundary的请求头,手动设置可能导致解析失败。 - 如果info对象里有嵌套的复杂对象,确保这些对象都能被
JSON.stringify正常序列化(无循环引用、特殊类型值)。
内容的提问来源于stack exchange,提问作者Hamed Ezati
相关产品推荐
相关产品推荐

