C# 在c中获取amazon web服务未签名的URL#
我正在使用AmazonSDK for.net 我已经在我的bucket文件夹中上传了一个文件,现在我想用这个代码获取该文件的urlC# 在c中获取amazon web服务未签名的URL#,c#,amazon-web-services,amazon-s3,unsigned,C#,Amazon Web Services,Amazon S3,Unsigned,我正在使用AmazonSDK for.net 我已经在我的bucket文件夹中上传了一个文件,现在我想用这个代码获取该文件的url GetPreSignedUrlRequest request = new GetPreSignedUrlRequest(); request.BucketName = "my-new-bucket2"; request.Key = "Images/Tulips.jpg"; request.Expires = Date
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
request.BucketName = "my-new-bucket2";
request.Key = "Images/Tulips.jpg";
request.Expires = DateTime.Now.AddHours(1);
request.Protocol = Protocol.HTTP;
string url = s3.GetPreSignedURL(request);
但这是返回带有密钥、退出日期和签名的url,但事实上我想在没有它们的情况下获取url,没有其他方法来获取url
**我试过的东西**
我搜索并发现我必须更改文件的权限
上传时我已更改文件的权限
request.CannedACL = S3CannedACL.PublicRead;
但它仍然返回相同的url
当我删除keyid、过期和签名时,它就会工作
但是我怎样才能不使用它来获取url,或者我必须手动执行它呢?这是经过设计的。如果您知道bucket名称和密钥,那么您就拥有了构建URL所需的一切。例如,这里的bucketname是
yourbcketname
,键是this/is/your/key.jpg
希望有帮助 我只是浏览了他们的文档,没有找到返回绝对url的方法。然而,我真的相信有一个是我看不到的。现在,您可以通过从结果中提取绝对url来解决问题:
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
request.BucketName = "my-new-bucket2";
request.Key = "Images/Tulips.jpg";
request.Expires = DateTime.Now.AddHours(1);
request.Protocol = Protocol.HTTP;
string url = s3.GetPreSignedURL(request);
index = url.IndexOf("?");
if (index > 0)
string absUrl = url.Substring(0, index);
希望有帮助:)您找到解决方案了吗?