当我在Safari/FFirefox中使用/test-csv
路由时,我可以下载一行csv文件。但当我在Chrome中尝试时,控制台的"网络"选项卡上会显示"加载响应数据失败"。
*edit*
重要的新细节:它确实可以在Windows电脑上的Chrome中工作,但不能在我的Macbook Pro 上工作
*edit*
我已经尝试了Content-Type
和Content-Disposition
标头的几种变体,但都没有成功。
当我去掉所有标题时,我在浏览器中只得到一个字符串:"id,name,email"
(不下载)。
我需要Chrome的某种特殊标题来强制下载这些流式数据吗?
use Symfony'Component'HttpFoundation'StreamedResponse;
Route::get('test-csv', function(){
$response = new StreamedResponse(function(){
// Open output stream
$handle = fopen('php://output', 'w');
fputcsv($handle, [
'id',
'name',
'email'
]);
fclose($handle);
}, 200, [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment;filename=export.csv;',
]);
return $response;
});
@Bogdan的评论让我意识到问题一定出在我在Chrome中的安装/设置中。
我关闭了扩展,卸载并重新安装了chrome。它现在正在按预期工作。
如果@bogdan想发布他的评论/建议作为答案,我会将其标记为已接受的答案。