火狐浏览器下载文件 文件名存在空格导致失败解决方法

293 阅读1分钟
最近在使用php下载文件的时候(头文件下载方式),发现在谷歌 IE上都可以成功,但是在火狐上出现如下现象:


它没有识别出文件,最后发现是因为文件名存在空格导致的,但是空格是需求必须的,思路是在文件名两边加双引号,所以改代码:

**这个是原来代码:**
 header("Cache-Control: max-age=0");
 header("Content-Description: File Transfer");
 header('Content-disposition: attachment; filename=' . basename($fileName)); // 文件名
 header('Content-Type: application/octet-stream');
 header("Content-Transfer-Encoding: binary"); // 告诉浏览器,这是二进制文件
 header('Content-Length: ' . filesize($filePath)); // 告诉浏览器,文件大小
 @readfile($filePath); //输出文件; 

只要修改第三句就行了:

header("Content-disposition: attachment; filename=\"" . basename($fileName). "\"");  // 文件名(加\是为了兼容火狐浏览器)
或者:
header('Content-disposition: attachment; filename="' . basename($fileName). '"');