Amazon web services 如何在React Native中直接在Amazon S3上上传图像?
我打算用React Native在AmazonS3上上传图片 我有S3签名用于上传图像 如何在React Native中使用此url上载图像 如果有人试过这个,请帮帮我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
谢谢大家! 您可以按如下方式使用
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预签名,您需要使用httpput
方法上载。您不能使用put方法提交表单数据,您应该将文件作为正文发送,而不是表单数据作为正文发送,您知道吗?您测试过了吗?当然!这是我过去的代码片段。您还需要有后端来生成s3预签名
它不起作用。不能使用PUT提交表单数据。在发布答案甚至测试代码之前,您需要阅读文档。第9.6节你错了!看见给定s3预签名url,您需要使用httpput
方法上载。您不能使用put方法提交表单数据,您应该将文件作为正文发送,而不是表单数据作为正文发送,您知道吗?我应该指出,预签名的url必须使用内容类型(如“image/png”等)签名。在服务器端正确签名之前,客户端代码无法正常工作。我应该指出,预签名的url必须使用内容类型(如“image/png”等)签名。直到我们在服务器端也正确签名,客户端代码才起作用。