发送 FormData 在 React-Native 中不起作用



我试图与API通信以从iPhone发送图片。我使用邮递员发送表单数据(键:mainPicture,值"我选择的文件"),并且运行良好。

当我尝试在 js 中执行此操作时,问题来了:API 在我的请求中找不到该文件。

这是我的代码:

  const formData = new FormData();
  formData.append('mainPicture', {
    uri: mainPicture.uri,
    type: 'image/jpg',
    name: `${mainPicture.id}.jpg`,
  });
  // ...
  // api come from apisauce package
  api.post(API_RES_IMG, formData, { headers: { ['Content-Type']: 'multipart/form-data' } })

服务器说:"错误:多部分:找不到边界"

如果没有内容类型,服务器将接收:

{"_parts":{"0":{"0":"mainPicture","1":{"uri":"assets-library://asset/asset.JPG?id=DE830A54-2526-44CB-81FE-00786D152080&ext=JPG","type":"image/jpg","name":"1e23519b-2006-4676-b63c-624e8198e17b.jpg"}}}}

一件简单的事情上挣扎太多。

我在这里看到的几个问题:

1)使用 fetch API 时,我们不需要设置 Content-Type 标头,因为 fetch 会处理这个问题,而且它还会处理填充边界。我假设这和 apsauce 是一样的,但我可能是错的。

2) 类型:"图像/JPG"不是有效的 MIME 类型。它应该是类型:"图像/jpeg"。

您应该添加内容类型

"内容类型":类型 === "表单" ?"多部分/表单数据" : "应用程序/JSON",

相关内容

  • 没有找到相关文章

最新更新