0

我允许用户使用 SAS 从 Windows Azure 存储池下载文件(参见本讨论)。正在构建 SAS,然后Request.Redirect(targetURL)调用 SAS 以重定向客户端的浏览器以下载文件。

这适用于使用 Chrome 下载文件(以扩展名 .dp 结尾的专有二进制文件)。

但是,当在 Internet Explorer 9 上下载相同的文件(使用相同的 URL)时,文件的扩展名被更改为 .zip(删除原来的 .dp).... 一些用户仍然使用 IE9 :(

我检查了 blob 的内容类型,它是application/octet-stream(因此应该是正确的)。

为什么 IE9 会更改文件的扩展名,我该怎么做才能防止这种情况发生?我是否需要指示 Azure 将 .dp 文件保持原样(mime 类型),如果需要,我该如何配置?

编辑:我真的想使用重定向而不是 blob.openread()/response.write() 来避免网络服务器上的额外负载。

更新 1

我用 Fiddler 查看了下载请求的服务器回答,很明显 content-type 是正确的:

HTTP/1.1 200 OK
Content-Length: 60783
Content-Type: application/octet-stream
Last-Modified: Fri, 17 Aug 2012 13:25:24 GMT
ETag: 0x8CF4XXXE4DD2184
Server: Blob Service Version 1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 21XXXXX-9e42-4ca8-a425-e84269d9f104
Date: Fri, 17 Aug 2012 16:49:05 GMT

服务器的内容负载以

PK����nAQ������p����

* FIDDLER:RawDisplay 被截断为 128 个字符。右键单击以禁用截断。*

IE 是否将“PK”解释为 PKZIP 并因此认为它是 ZIP 文件?

如何禁用(在客户端) - cf。下面的第一条评论不是诀窍......

亲切的问候,

罗比德萨特

4

2 回答 2

1

我怀疑这只是 IE 在做一些烦人的事情。我建议将内容类型更改为类似的内容application/x-foobar,也许将“foobar”替换为更有意义的内容。:-)

我还没有测试过,但我认为这足以让 IE 停止尝试猜测文件类型。

于 2012-08-17T23:30:28.200 回答
1

您可以通过在末尾添加查询字符串参数来欺骗 IE,例如:&ext=.exe。

我们生成一个指向 .exe + sas 令牌的链接。因此,该链接可在短时间内访问。IE 无法识别该文件 https://.blob.core.windows.net/container/file.exe?sv=2014-02-14&sr=b&sig=1oRgEzi%2F5uXCPUiseHizadfasdfa0vEs%3D&st=2015-05-18T19%3A36 %3A42Z&se=2015-05-18T19%3A46%3A42Z&sp=r 实际上是一个可执行文件,并且没有文件扩展名保存它。但如果我这样做:https://.blob.core.windows.net/container/file.exe?sv=2014-02-14&sr=b&sig=1oRgEzi%2F5uXCPUiseHizadfasdfa0vEs%3D&st=2015-05-18T19%3A36%3A42Z&se= 2015-05-18T19%3A46%3A42Z&sp=r&ext=.exe(在末尾添加 &ext=.exe)IE 现在可以正确保存文件。

于 2015-05-18T19:49:59.503 回答