这是我的控制器和方法的路线:Route::post('exportarDireccionTodos','MyController@exportarDireccionTodos');我正在使用 javascript 从单击按钮调用该路由:$.ajax({ url: baseUrl+'exportarDireccionTodos', type: 'POST', data: {'id': optionsChecked}, success: function(response) { //etcMyController 有这个代码:$delimiter=";";$array = MyModel::findMany($todos)->toArray();$filename = "direcciones.csv";header("Content-Transfer-Encoding: UTF-8");header('Content-Type: application/csv');header('Content-Disposition: attachment; filename="'.$filename.'";');$f = fopen('php://output', 'wb');foreach ($array as $line) { fputcsv($f, $line, $delimiter);}fclose($f)return response()->json([ 'status' => 'success', 'mensaje' => 'Direcciones exportadas a CSV']);我将一些发送id到我的模型,然后我正在创建一个 csv 文件,但我无法下载它,我只是在开发人员工具 XHR 中看到它制作得很好,如下所示:我试过:header('Content-Type: application/force-download');header('Content-Type: text/csv');与:return Response::download($f, $filename, $headers); <-- here I got an error, Laravel 5.1 doesnt reconigze Response与:return response()->download($f, $filename);总是发生同样的情况,制作了 csv 但无法下载。我已经尝试了 2 种其他方法来创建 csv,但它始终生成良好但无法下载
2 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
您在上次通话中缺少标题
return response()->download($f, $filename, $headers);
我在我的 Laravel 应用程序上使用这些标头来下载文件
$headers = [
'Content-Type' => 'application/csv',
"Content-Description" => "File Transfer",
"Cache-Control" => "public",
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
];
您可能有更好的运气临时存储文件并生成一个 URL 以从中下载
$fs = Storage::disk('local')->temporaryUrl($path, now()->addMinutes(5));
- 2 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消