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

React Native 单次请求上传多张图片时request.FILES为空如何解决?

问题原因
  • 直接将图片对象数组append到FormData中:FormData不支持直接序列化普通JS数组,提交时数组会被转为[object Object]拼接的字符串,后端无法识别为文件类型,因此request.FILES为空。
  • 多图处理逻辑的循环下标从1开始:会跳过photos数组的第一个元素,导致第一张图漏传。
  • 仅在photos长度大于1时才添加图片字段:判断逻辑覆盖不全,不符合多图上传的通用处理规则。
修复方案

修改后的代码如下:

const createFormData = (photos, body = {}) => {
  const data = new FormData();

  // 移除多余的长度判断,单张、多张统一处理
  photos.forEach((photo) => {
    const fileObj = {
      name: photo.fileName,
      type: photo.type,
      uri: Platform.OS === "ios" ? photo.uri.replace("file://", "") : photo.uri,
    };
    // 每个文件单独append,字段名加[]匹配多数后端框架的多文件解析规则
    data.append("images[]", fileObj);
  });

  Object.keys(body).forEach((key) => {
    data.append(key, body[key]);
  });

  return data;
};
额外注意事项
  • 发起请求时不要手动设置Content-Type请求头,浏览器/React Native的请求库会自动生成带boundary标识的multipart/form-data类型头,手动设置会导致boundary丢失,后端无法拆分解析文件。
  • 若你使用的后端框架不要求字段名带[]后缀,可将images[]修改为images,但仍需保持每个文件单独append的写法。

内容的提问来源于stack exchange,提问作者user12314098

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:24:04