gpt4 book ai didi

reactjs - 暂时上传到 S3 上,如果不使用就删除?

转载 作者:行者123 更新时间:2023-12-04 03:08:53 27 4
gpt4 key购买 nike

我正在尝试使用 react-draft-wysiwyg 在 react 上实现所见即所得的文本编辑器。

为了使用文本编辑器上传图像,我尝试将uploadCallback 函数上的文件发布到S3,并将上传项目的url 返回给编辑器。

但我不知道如何处理未使用的图像(提交前删除)
只是在我的 S3 存储桶中闲逛。有什么好的方法可以防止这种情况吗?我试图只以 base64 格式发布图像,但这似乎只是浪费内存的方式。

最佳答案

有几种方法可以解决这个问题:

从 Lambda 获取预签名 URL

您可以在 API 网关后面编写一个 lambda 函数,您可以调用该函数为您提供预签名的 URL 以在 S3 上发布。此 URL 将允许拥有此 URL 的任何人上传 一次到 S3。当用户准备好提交文本编辑器时,您只需使用预签名的 URL 将附加文件发布到 S3。

C# Lambda 示例

IAmazonS3 client;
client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);
// Generate a pre-signed URL.
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = objectKey,
Verb = HttpVerb.PUT,
Expires = DateTime.Now.AddMinutes(5)
};
string url = null;
url = s3Client.GetPreSignedURL(request);

// Upload a file using the pre-signed URL.
HttpWebRequest httpRequest = WebRequest.Create(url) as HttpWebRequest;
httpRequest.Method = "PUT";
using (Stream dataStream = httpRequest.GetRequestStream())
{
// Upload object.
}

HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;

您可以在 AWS S3s documentation 找到更多示例。通过使用 Java、C#、Ruby 等编写的 Lambda 获取预先签名的 URL。

要从 Reactjs 应用程序上传到预先签名的 URL,您可以在 this Stackoverflow post 找到一些很棒的示例。 .

S3 对象过期

您可以将所有待处理的图像移动到具有 的存储桶中。生命周期配置 在一定时间内删除对象。然后,在提交帖子时,您可以将对象从临时存储桶移动到更永久的存储桶。更多信息 S3 object expiration可以在他们的 docs 中找到.

关于reactjs - 暂时上传到 S3 上,如果不使用就删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46769995/

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