似乎firefox在下载文件名中有空格问题...
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
fputs($fp, $csvdata);
fclose($fp);
以下是名为Test_ Grad Fair 2_20140129_1312_607.csv
当我尝试使用FireFox上面的代码下载文件时,会发生以下情况。 (主要问题是它删除了文件扩展名!)
当我尝试从Safari或Chrome浏览器下载时
我知道解决办法可能就是:
$filename = str_replace(' ', '', $filename);
但是,我更喜欢弄清楚为什么FireFox遇到这个问题,你不能在文件名中有空格似乎有点荒谬。这可能像%20
而不是空间问题吗?
答案 0 :(得分:40)
filename参数应该用双引号括起来。
header( 'Content-Disposition: attachment;filename="'.$filename.'"');
请参阅http://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download
答案 1 :(得分:2)
下载文件名包含空格的文件时遇到了一个小问题。 我使用以下代码修复了此问题。 我为CodeIgniter框架工作编写了这段代码。
$file_name = 'Test Pdf.pdf'; //Your file name
$original_file_name = 'Test Pdf.pdf'; //Your file name
$file_name = str_replace(' ', '%20', $file_name);
$file_url = asset_url("uploads/agent_logo/46/".$file_name);// Full file path including file name.
ob_start();
ob_end_clean();
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header("Content-Disposition: attachment; filename=\"" . $original_file_name . "\"");
readfile($file_url);
这适用于所有类型的文件和所有浏览器,包括mozilla firefox和IE