为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 5.1,将模型导出到 csv 工作但不下载

Laravel 5.1,将模型导出到 csv 工作但不下载

PHP
智慧大石 2021-06-03 10:13:27
这是我的控制器和方法的路线: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));


查看完整回答
反对 回复 2021-06-04
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信