【发布时间】:2012-04-18 03:38:46
【问题描述】:
我尝试从我的网站下载文件名为 GB2312%D5%D5%C6%AC.JPG 的文件,在 IE9/Firefox 中一切正常,但在 Google Chrome 中却不行。
在 Google Chrome 中,此文件名被我的下载页面名称替换(可能 Chrome 无法解码文件名)。
为了确定 Chrome 是否正在尝试解码文件名,我尝试使用另一个字符串 GB2312%2C%2D%2E.txt 作为文件名,firefox/IE9 仍然可以正常工作,但谷歌浏览器会尝试解码这个文件名(将 %2D 替换为 '-')。
如何防止谷歌浏览器解码文件名?如果我能在我的服务器端(PHP)解决这个问题就更好了
以下几行是我的服务器生成的响应标头。
**Response Headers:**
Cache-Control:must-revalidate, post-check=0, pre-check=0, private
Connection:keep-alive
Content-Description:File Transfer
Content-Disposition:attachment; filename="GB2312%D5%D5%C6%AC.JPG"
Content-Length:121969
Content-Transfer-Encoding:binary
Content-Type:application/force-download; charset=UTF-8
Date:Wed, 18 Apr 2012 03:32:30 GMT
Expires:0
Pragma:public
Server:nginx/1.1.5
X-Powered-By:PHP/5.3.8
【问题讨论】:
-
为什么需要对文件名进行编码?
-
这个文件是用户发布的,不是服务器端的。实际上它是一个邮件附件,换句话说,这是原始文件名,我没有做任何事情。
标签: php google-chrome download