React Native(Expo)中的图像上传,使用fetch导致400错误

问题描述 投票:0回答:1

几天来,我一直在努力进行图片上传。我正在使用这样的formdata:

let formData = new FormData();
formData.append('file', {
  uri: uri,
  name: `name`,
  type: `image/jpeg`,
});

iOS上的uri与Android上的asset-library://asset/path类似,就像content://media/external/images/media/25377

let options = {
  method: 'POST',
  body: formData,
  headers: {
    Accept: 'application/json',
    'Authorization': 'Bearer ' + token,
  },
};
let response = await fetch("https://myserverurl", options)

我尝试了每个技巧读取图像为blob,删除内容类型,其他库如axios等...无论我总是得到400错误的文件格式错误。

formdata有什么我想念的吗? (在后端我们使用ASP.NET)

react-native fetch multipartform-data expo fetch-api
1个回答
0
投票

我们遇到了类似的问题,并能够通过以下方式解决问题。我们使用NodeJS后端(带有multer)来处理文件上传。

Expo - 移动应用程序代码

  // extract the filetype
  let fileType = uri.substring(uri.lastIndexOf(".") + 1);

  let formData = new FormData();

  formData.append("photo", {
    uri,
    name: `photo.${fileType}`,
    type: `image/${fileType}`
  });

  let options = {
    method: "POST",
    body: formData,
    headers: {
      Accept: "application/json",
      "Content-Type": "multipart/form-data"
    }
  };

我们正在用fetch(apiUrl, options)执行请求。

uri是我们案例中照片的本地文件路径(完整URI,例如file:///...),apiUrl是服务器端的端点。

我认为问题可能在于formdata中uri的类型和格式。你试过使用图像选择器返回的uri吗?

© www.soinside.com 2019 - 2024. All rights reserved.