将本机上载映像React到AWS服务器不适用于Android

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

尝试将映像从React Native上传到AWS Server时,我遇到了一些问题。这是我的代码:

async function uploadImageAsync(uri) {
  console.log(uri);
  let apiUrl = '...' 
  let uriParts = uri.split('.');
  let fileType = uri[uri.length - 1];
  let formData = new FormData();
  formData.append('image', {
    uri,
    name: `image.jpg`,
    filename: `image.jpg`,
  });

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

  return fetch(apiUrl, options);
}

在控制台打印出的结果是:

file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540gh%252Ftp2/ImagePicker/37c89140-2172-4566-98a2-e7393ea72e89.jpg
Object {
  "uploadResponse": undefined,
}
Object {
  "uploadResult": undefined,
}
Object {
  "e": [TypeError: Network request failed],
}

我做的是从图像选择器中选择一个图像,然后我将其上传到AWS服务器。如果成功,打印出成功消息。如果失败,请在上面的控制台中打印出来。

奇怪的是,它设法上传到iOS而不是Android上传。任何想法为什么会这样?

谢谢!

javascript android image amazon-web-services react-native
2个回答
1
投票

我不确定您是否正在尝试将文件上传到AWS S3服务,但如果您是,则可以查看AWS Amplify React Native,它可能会对您有所帮助。

通过使用此库,您可以通过以下方式上传文件:

Storage.put('test.txt', 'Hello')
    .then (result => console.log(result))
    .catch(err => console.log(err));

详细信息在https://github.com/aws/aws-amplify


0
投票

我有类似的问题,最后解决了。所以我想我可以给你一个提示。

  1. 首先,[TypeError:网络请求失败]表示问题出在客户端。
  2. apiUrl应该https:// ... 您可以使用localtunnel npm进行测试。它为您提供代理到本地网址的https格式网址。

  1. 你可以添加类型:'image / jpeg'来形成数据。 你可以在这里查看media type

这是获取代码的一部分

https://gist.github.com/zeroFruit/d46d4cae57e5e8cf59e1b541c0bf322e

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