我在使用 IE8 时遇到问题,其中包含查询字符串的 URL 在下载时被破坏。
特别是像这样的 URL
http://domain.com/software/Software%202.1%20Beta.exe?AWSAccessKeyId=1HCB7Z221V5CV2K1ZDG2&Expires=1307910775&Signature=iQ11pHtVrFS6Up171MI1%2BK3ErPo%3D
导致 IE8 为名为的文件提供文件下载通知
软件2.1%20Beta[1].exe
我完全不明白为什么第一个“%20”被 IE 正确翻译成空格,但第二个 %20
保持原样,而扩展名被删除并且附加了 [1]
。
无法删除尾随查询字符串(S3 链接过期)。你们有什么建议来摆脱这种疯狂吗?我的 URI 编码是否有问题?
最佳答案
啊哈!
通过添加非标准 HTTP Content-Disposition header 来解决,该 header 除了完全令人厌恶之外,还被 IE 用来覆盖任何其他自动命名因素。
内容处置:附件; filename="我的程序2.1.0 Beta.exe"
Content-Disposition 采用 ISO-Latin 编码的文件名,即没有 HTML 编码废话,但从技术上讲也没有 UTF8 字符,这对我来说不是问题。
事实证明,您可以从 AWS 管理控制台的文件浏览器中指定这一点。只希望有某种方法可以让它自动提供 Content-Disposition header ,而不必为我正在提供的每个下载而硬塞它>。<
编辑:
aaaa我说得太早了。亚马逊为此添加了一项功能:http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTObjectGET.html其中,人们可以手动请求使用特定的 Content-Disposition header 来提供文件,这意味着 Amazon 和 AWS 团队真的很强大!
关于internet-explorer - Internet Explorer 正在破坏下载文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6324187/