在获得预先签名的URL时,在aws s3 c#中签名

时间:2016-07-21 15:12:20

标签: c# asp.net-mvc amazon-web-services file-upload amazon-s3

嗨我有mvc应用程序我想在亚马逊s3上获取上传图片的网址,但在获取网址后无法在浏览器中打开 获取Url的代码是

  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);

我也得到了网址,但是在将其搜索到浏览器后,显示签名不匹配。

2 个答案:

答案 0 :(得分:0)

生成预配URL并绑定到html后。带有十六进制值的签名将更改为asci符号。

确保为没有十六进制值的预签名网址创建签名

答案 1 :(得分:0)

一些建议:

  1. 指定动词: expiryUrlRequest.Verb = HttpVerb.GET;
  2. 检查存储桶策略是否允许使用您用于访问此存储桶的访问密钥的IAM角色/ AWS账户访问存储桶(使用工具:https://awspolicygen.s3.amazonaws.com/policygen.html
  3. 使用少于7天的到期时间(无法解决此问题,但允许的最大值为7天)
  4. 将ContentType设为“video / mp4”(值得一试)。