AWS S3预签名URL改为返回ListBucketResult

yoon_ie

我正在尝试使用GetPreSignedUrlRequest方法获取一个预签名URL,以访问我的私有存储桶中的图像。

我的代码如下:

public string GetPresignedImageURL(string keyString)
{
    string urlString = "";
    try
    {
        GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
        {
            BucketName = bucket,
            Key = keyString,
            Expires = DateTime.Now.AddMinutes(5)
        };
        urlString = _client.GetPreSignedURL(request);
     }
     catch (AmazonS3Exception e)
     {
         Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
     }
     catch (Exception e)
     {
         Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
     }
     return urlString;
}

我传入了要获取的对象的密钥,例如0BE1137F0F3E4703A0F0689346B49871_0.jpg。

但是,这是我得到的响应URL。它没有将对象的密钥附加到响应中,仅将签名标头附加到响应中。

https://<bucket>.ap-southeast-1.amazonaws.com/?X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>/20190701/ap-southeast-1/s3/aws4_request&X-Amz-Date=20190701T065534Z&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>

如果我将此链接粘贴到浏览器中,则表明它是一个ListBucketResult请求。

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>bucket</Name>
    <Prefix/>
    <Marker/>
    <MaxKeys>1000</MaxKeys>
    <IsTruncated>false</IsTruncated>
<Contents>
    <Key>0BE1137F0F3E4703A0F0689346B49871_0.jpg</Key>
    <LastModified>2019-07-01T06:52:17.000Z</LastModified>
    <ETag>"89db9b468ba0eb45600ed9603fe9f41d"</ETag>
    <Size>1621409</Size>
    <Owner>...</Owner>
    <StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
    <Key>18F6F2B700A747F983DB26EBC8F3E92F_0.jpg</Key>
    <LastModified>2019-06-28T08:44:40.000Z</LastModified>
    <ETag>"61aa2a6270ec840b185331646ee884a2"</ETag>
    <Size>88703</Size>
    <Owner>...</Owner>
    <StorageClass>STANDARD</StorageClass>
    </Contents>
</ListBucketResult>

我不确定这是否是错误,或者我是否在这里缺少任何东西。我想知道如何获取图像的预签名URL,以显示在浏览器中或作为直接下载链接(使用content-disposition,但也不起作用)代替存储桶的密钥列表。谢谢!

尼娜·盖克瓦德(Ninad Gaikwad)

检查您的keyString变量。在发送请求之前将其打印出来,以确保它不为空。获取单个对象的获取预签名URL与列出所有对象的获取预签名URL之间的唯一区别是您作为参数发送密钥

在此处查看更多信息:https : //docs.aws.amazon.com/sdkfornet1/latest/apidocs/html/T_Amazon_S3_Model_GetPreSignedUrlRequest.htm

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建Amazon AWS S3预签名URL PHP

AWS S3预签名URL限制

AWS S3预签名URL的哪个IAM角色

带有其他查询参数的AWS S3预签名URL

Nodejs AWS开发工具包S3生成预签名URL

带邮递员的AWS S3预签名URL上传图像

预签名的AWS S3 PUT URL无法使用jquery从客户端上传

具有强制内容-md5的AWS S3预签名URL

使用预签名URL从AWS s3读取文件的内容

处理AWS S3预签名URL到期日期的最佳实践

如何通过AWS CLI生成预签名的S3 URL

仅在巴林 AWS 区域无法预签名 s3 url

AWS PHP SDK:限制预签名URL中的S3文件上传大小

使用Retrofit2将文件上传到AWS S3预签名URL

适用于S3存储桶中的资产的AWS预签名URL

在.Net中为AWS s3生成预签名的URL

带有元数据的AWS S3预签名URL

将文件上传到AWS S3预签名URL Retrofit2 Android

AWS s3 预签名 url 有时会生成不同的 url 和 403 错误

AWS 预签名 URL

AWS S3无法使用预签名URL检索文档:无效的日期(自纪元以来应为秒)

429使用aws-sdk为s3对象生成预签名的URL时,请求过多

由于Amplify上的身份验证令牌过期时间短,AWS S3预签名URL过期

使用预签名 URL 上传后,AWS S3 上的文件在文件中包含额外信息

AWS S3生成签名的URL``AccessDenied''

AWS S3签名的URL编码结果为“ SignatureDoesNotMatch”

AWS S3预签名上载:我的服务器如何验证上载已完成?

如何在Go中将预签名的POST上传到AWS S3?

如何在Ruby中将预签名的POST文件上传到AWS S3?