如何在React Native中直接在Amazon S3上上传图像?

时间:2016-04-16 23:17:27

标签: amazon-web-services amazon-s3 react-native

我将在React Native中的Amazon S3上上传图片。

我有S3 signedUrl用于上传图片。

如何在React Native中使用此网址上传图片?

如果有人试过这个,请帮助我。

谢谢!

3 个答案:

答案 0 :(得分:4)

这很简单,我花了很多时间发现:

const xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      // success
    } else {
      // failure
    }
  }
}
xhr.open('PUT', presignedUrl)
xhr.setRequestHeader('Content-Type', fileType)
xhr.send({ uri: filePath, type: fileType, name: fileName })
  • filePath 是文件的完整路径
  • fileType 是文件的mime类型
  • fileName 是文件名

来源:http://blog.rudikovac.com/react-native-upload-any-file-to-s3-with-a-presigned-url/

答案 1 :(得分:0)

您可以按以下方式使用fetch

import { ImagePickerIOS } from 'react-native';

ImagePickerIOS.openSelectDialog({},(assetUri)=>{
  var photo = {
    uri: assetUri,
    type: 'image/jpeg',
    name: 'main.jpg'
  }

  var body = new FormData();
  body.append('file', photo);

  fetch(presignedUrl, {
    method: 'put', body: body
  });
},()=>{ console.log('failed'); })

答案 2 :(得分:0)

  const file = {
        uri: response.uri,
        name: "image.png",
        type: "image/png"
      }

      const options = {
      keyPrefix: "",
      bucket: "",
      region: "",
      accessKey: "",
      secretKey: "",
      successActionStatus: 200
     }

     RNS3.put(file, options).then(response => {
       if (response.status !== 200)
       alert(response.body);
       else {
//Success## 


----------


 ##
         alert(JSON.stringify(response))

       }
     });