You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:33:31