【发布时间】:2014-08-20 05:36:29
【问题描述】:
我正在使用 PHP 从 Laravel 中的数据库条目创建一个简单的 .csv,下面是代码的一个小示例:
$file = fopen(storage_path('file.csv'), 'w');
//$printer = array from database
foreach ($printer as $row) {
fputcsv($file, $row);
}
fclose($file);
//$formname = Object values
$headers = array(
'Content-Type: text/csv',
'Content-Length: ' . filesize(storage_path('file.csv')),
'Content-Disposition: attachment; filename="'.$formname->name.'.csv"'
);
return Response::download(storage_path('file.csv'), $formname->name.'.csv', $headers);
一切都非常标准,对我来说工作正常,但我的客户端使用的是 OS X 10.9.3 和 Safari 7.0.4,每次下载都有一个 .txt 扩展名,我无法找到从任一服务器阻止它的方法或客户端。 (所以它下载为 file.csv.txt)
我搜索了谷歌,但只能找到其他有问题的用户 - 没有解决方案,上面的代码已经使用 Stackoverflow 上的建议进行了编辑: 1.laravel adding .txt on the downloaded file 2.How to use the CSV MIME-type?
谁能告诉我这个问题出现在哪里以及如何解决它? 有没有我可以测试下载的地方,因为我只有 Windows,而且我使用的测试网站只提供视觉渲染。
另外:客户向我保证他可以从其他来源下载 .csv 文件而不会出现此问题
【问题讨论】:
-
试试
"Content-Type: text/csv; charset=utf-8"
标签: php macos safari fopen fputcsv