我想下载存储在storage / export / path中的excel文件。我在laravel 5.5中使用了Maatwebsite excel提供程序。
我的控制器代码如下:
ob_end_clean();
ob_start();
Excel::create($excelName, function($excel) use($adminUserDataExcelSelected) {
$excel->sheet('Sheet 1', function($sheet) use($adminUserDataExcelSelected) {
$sheet->fromArray($adminUserDataExcelSelected);
});
})->store('xlsx');
ob_flush();
return response()->json(['path' => $path]);
我的AJAX代码如下;
$.ajax({
url: "/administrator/adminUser/exportselected/1/",
type:'POST',
data: {_token:_token, selected:selected, selectedField:selectedField},
success: function(data) { alert(data.path);
if($.isEmptyObject(data.error)){
}else{}
}
});
当我提醒/ console.log data.path时,我收到了以下内容:
/ var / www / html / stmd_OLD / storage / export / Admin-Users2018-05-17 04:46:47
我的问题是:如何立即立即下载excel文件?我应该在这里调用另一个AJAX方法吗?
答案 0 :(得分:2)
您需要替换此行return response()->json(['path' => $path]);
用这一行
return response()->download(storage_path('storage/export/AdminUsers2018-05-17 04:46:47.xlsx'));
然后你只需要点击调用返回它的控制器函数的链接。无需额外的AJAX调用。
您可能还需要在控制器的开头添加此行
use Illuminate\Support\Facades\Storage;