Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在React Native中直接在Amazon S3上上传图像?_Amazon Web Services_Amazon S3_React Native - Fatal编程技术网

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

Amazon web services 如何在React Native中直接在Amazon S3上上传图像?,amazon-web-services,amazon-s3,react-native,Amazon Web Services,Amazon S3,React Native,我打算用React Native在AmazonS3上上传图片 我有S3签名用于上传图像 如何在React Native中使用此url上载图像 如果有人试过这个,请帮帮我 谢谢大家! 您可以按如下方式使用fetch: import { ImagePickerIOS } from 'react-native'; ImagePickerIOS.openSelectDialog({},(assetUri)=>{ var photo = { uri: assetUri, typ

我打算用React Native在AmazonS3上上传图片

我有S3签名用于上传图像

如何在React Native中使用此url上载图像

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


谢谢大家!

您可以按如下方式使用
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'); })

您可以按如下方式使用
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'); })

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

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是文件名

来源:

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

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是文件名

来源:

您应该如何处理URL?只是一个帖子?如果是这样,只需使用FETCH发出请求。更多的细节会很有帮助。你应该如何处理URL?只是一个帖子?如果是这样,只需使用FETCH发出请求。更多细节会有帮助。你测试过吗?当然!这是我过去的代码片段。您还需要有后端来生成
s3预签名
它不起作用。不能使用PUT提交表单数据。在发布答案甚至测试代码之前,您需要阅读文档。第9.6节你错了!看见给定s3预签名,您需要使用http
put
方法上载。您不能使用put方法提交表单数据,您应该将文件作为正文发送,而不是表单数据作为正文发送,您知道吗?您测试过了吗?当然!这是我过去的代码片段。您还需要有后端来生成
s3预签名
它不起作用。不能使用PUT提交表单数据。在发布答案甚至测试代码之前,您需要阅读文档。第9.6节你错了!看见给定s3预签名url,您需要使用http
put
方法上载。您不能使用put方法提交表单数据,您应该将文件作为正文发送,而不是表单数据作为正文发送,您知道吗?我应该指出,预签名的url必须使用内容类型(如“image/png”等)签名。在服务器端正确签名之前,客户端代码无法正常工作。我应该指出,预签名的url必须使用内容类型(如“image/png”等)签名。直到我们在服务器端也正确签名,客户端代码才起作用。