gpt4 book ai didi

javascript - 使用 AWS PreSignedURL 将图像上传到 Amazon S3

转载 作者:行者123 更新时间:2023-11-30 16:22:37 25 4
gpt4 key购买 nike

我正在使用 HttpVerb 生成预签名 URL 作为 PUT 以将文件上传到我的存储桶。奇怪的是,当我使用 AWSSDK 使用预置 URL 上传文件时,它工作正常。但是,当我在表单操作方法中使用此 URL 时,出现以下错误。“我们计算出的请求签名与您提供的签名不匹配。请检查您的 key 和签名方法。”

下面是上传文件的HTML代码

    <html> 
<head>
<title>S3 POST Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
<form action="https://mvrskt-certifications.s3-ap-southeast-1.amazonaws.com/Temp/ARMA.jpg?AWSAccessKeyId=AKIAIGPD33Q3DT22IFWQ&Expires=1451482258&Signature=nYx%2F2kDmna5XqEWx5CPTg4OIYDU%3D" method="post" enctype="multipart/form-data">
<input type="hidden" name="key" value="mvrskt-certifications/Temp/ARMA.jpg">
<input type="hidden" name="Content-Type" value="image/jpeg">
<!-- Include any additional input fields here -->

File to upload to S3:
<input name="file" type="file">
<br>
<input type="submit" value="Upload File to S3">
</form>
</body>
</html>

下面是我用来生成 PreSignedURL 的 C#.NET 代码

GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = objectKey,
Verb = HttpVerb.PUT,
Expires = DateTime.Now.AddMinutes(15)
};

string url = null;
request.ContentType = "image/jpeg";
url = s3Client.GetPreSignedURL(request);

我已经为我的存储桶设置了 CORS 策略,如下所述

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我是 AWS S3 的新手,对使用它感到非常困惑......请协助如何使用表单发布或 AJAX 上传此文件

此外,我们是否需要为我要上传的每张图片生成 PreSignedURL?

我可以看到我们也可以使用签名策略来上传图片,但是我是否需要为我要上传的每张图片生成签名策略

最佳答案

预签名 URL 特定于 key (存储桶中的路径/文件)、HTTP 动词 (PUT) 以及您要发出的请求的其他属性。

表单 POST 不是 HTTP PUT 请求,所以这就是为什么不能对 使用预签名 URL 的简单解释PUT 请求,当您发出 POST 时。

不仅动词不可互换,基于浏览器的 POST 上传是与 PUT 完全不同的操作,并且需要签名的策略声明来指示可接受的值对于各种表单字段。如果没有它,您将无法从表单上传。

是的,您应该为每个要上传的文件生成策略和签名,否则您会暴露给恶意用户覆盖您希望他们能够写入的文件以外的文件。

关于javascript - 使用 AWS PreSignedURL 将图像上传到 Amazon S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530407/

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