【问题标题】:Windows Azure Blob Storage download with Shared Access Signature and CUSTOM response header带有共享访问签名和自定义响应标头的 Windows Azure Blob 存储下载
【发布时间】:2021-08-13 12:54:09
【问题描述】:

我使用 Windows Azure Blob Storage 将文件保存在那里。 要下载文件,我使用共享访问签名创建 url。 它工作正常,但有一个问题。 一些文件(blob)在上传期间设置了标题“Content-Type”,其他没有。 如果一个文件没有 Content-Type 而不是对 Azure 的请求,则响应将具有标头 Content-Type: application/octet-stream 。这正是我所需要的,因为在这种情况下,浏览器会为用户显示“下载对话框”。

但是对于在上传时设置此标头的文件,它会被返回,有时会出现问题。例如,Content-Type: images/jpeg 使浏览器显示此图像,但不下载它(不显示下载对话框)

所以,我的问题是 有没有办法使用来自 WIndows Azure 的预签名 url 来强制使用某些特定的响应标头? 我希望它的行为就像没有为文件保存 Content-Type,即使它已保存

【问题讨论】:

    标签: azure-blob-storage


    【解决方案1】:

    所以,经过一段时间的浏览,我终于找到了有关它的文档。

    有参考。 https://nxt.engineering/en/blog/sas_token/ https://docs.microsoft.com/en-us/rest/api/storageservices/service-sas-examples https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas

    对我来说,需要升级 API 的版本(我使用的是 2012 API 版本)。

    也是一个有用的注释。它对日期格式非常敏感。过期时间的格式必须是“2021-11-16T04:25:00Z”。

    我添加了 2 个新参数 'rscd=file;%20attachment&rsct=binary&'。 并且两者都必须在签名字符串中才能在正确的位置签名

    【讨论】:

      【解决方案2】:

      所以,我的问题是有没有办法使用预签名的 url 从 WIndows Azure 强制使用某些特定的响应标头?我要它 表现得好像没有为文件保存 Content-Type,即使它是 保存

      是的,您可以覆盖 SAS 令牌中的 Content-Disposition 响应标头,无论其内容类型如何,都会始终下载 blob。

      您可以将此标头覆盖为 attachment; filename=yourdesiredfilename 之类的值,并且该 blob 将始终以 yourdesiredfilename 名称下载。

      【讨论】:

        猜你喜欢
        • 2013-06-28
        • 2016-08-23
        • 1970-01-01
        • 2022-10-21
        • 2017-08-24
        • 2014-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多