gpt4 book ai didi

amazon-web-services - 通过 Expo ImagePicker 将 native 图片上传到 aws S3

转载 作者:行者123 更新时间:2023-12-03 23:54:36 25 4
gpt4 key购买 nike

我想将照片上传到 S3 存储桶,我目前使用 Expo 和 aws-amplify 来解决这个问题。

获取本地镜像的代码如下:

import { ImagePicker } from 'expo';

ImagePicker.launchImageLibraryAsync({
mediaTypes: 'Images',
allowsEditing: true,
aspect: [1, 1],
base64: true
})
.then(image => dispatch(pickImageSuccess(image)))
.catch(err => dispatch(piclImageFail(err)));

获得图像后,我通过 { Storage } from 'aws-amplify' 将图像上传到 s3 存储桶
import { Storage } from 'aws-amplify';

const file = image.base64;
const imageName = image.uri.replace(/^.*[\\\/]/, '');
console.log(imageName);
const access = { level: "public", contentType: 'image/jepg' };
Storage.put(`${username}/${imageName}`, file, access)
.then(succ => console.log(succ))
.catch(err => console.log(err));


我上传了图像,我尝试在 S3 存储桶中打开图像。图像无法正常打开,除非我在 S3 存储桶中将文件标记为 public,否则我也无法公开访问该图像。

最佳答案

只要弄清楚问题是什么。 Storage 中的 put() 方法需要一个 blob 作为参数。这是我为实现这一目标所做的工作。

import { ImagePicker } from 'expo';
import mime from 'mime-types';
import { Storage } from 'aws-amplify';


const imageName = image.uri.replace(/^.*[\\\/]/, '');
const fileType = mime.lookup(image.uri);
const access = { level: "public", contentType: fileType, };
fetch(image.uri).then(response => {
response.blob()
.then(blob => {
Storage.put(`${username}/${imageName}`, blob, access)
.then(succ => console.log(succ))
.catch(err => console.log(err));
});
});

关于amazon-web-services - 通过 Expo ImagePicker 将 native 图片上传到 aws S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com