var expiryUrlRequest = new GetPreSignedUrlRequest();
expiryUrlRequest.BucketName = BUCKET_NAME;
expiryUrlRequest.Key = "uploads/participantid_" + v1+ "/taskid_" + v2 + "/" + 0 + ".mp4";
expiryUrlRequest.ContentType = "Video/mp4";
expiryUrlRequest.Expires = DateTime.Now.AddYears(10);
string url = client.GetPreSignedURL(expiryUrlRequest);
我也得到了网址,但将其放入浏览器后,它显示签名不匹配。
确保为不带十六进制值的预签名 URL 创建签名
SignatureDoesNotMatch。
我们计算出的请求签名与您的签名不符 假如。检查您的密钥和签名方法。我将源代码中的 AWS S3 .NET SDK 升级到当前版本后出现此问题。
从 GetPreSignedUrlRequest 对象中注释掉 Verb 键(包括之前的更改)后,它开始正常工作。
var request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = objectKey,
Expires = DateTime.UtcNow.AddHours(duration),
};
这个 AWS 代码示例帮助我找到了问题。