Laravel 5通过AJAX下载存储/导出下的excel文件(maatwebsite/excel)
我想下载一个excel文件,该文件存储在storage/export/path中。我在laravel 5.5中使用了Maatwebsite excel提供程序 我的控制器代码写在下面:Laravel 5通过AJAX下载存储/导出下的excel文件(maatwebsite/excel),laravel,laravel-5,Laravel,Laravel 5,我想下载一个excel文件,该文件存储在storage/export/path中。我在laravel 5.5中使用了Maatwebsite excel提供程序 我的控制器代码写在下面: ob_end_clean(); ob_start(); Excel::create($excelName, function($excel) use($adminUserDataExcelSelected) { $excel->sheet('Sheet 1', function($sheet) use($a
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{}
}
});
当我在data.path中添加alert/console.log时,我收到以下消息:
/var/www/html/stmd_OLD/storage/export/Admin-Users2018-05-17 04:46:47
我的问题是:现在如何立即下载excel文件?我应该在这里调用另一个AJAX方法吗?您需要替换这一行
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;
我修改了代码,但是excel文件没有下载。我应该也更改AJAX代码吗?您能看到存储/导出文件夹中的文件吗?通常可下载的文件保存在公用文件夹下,因为它拥有所有权限。尝试从公用文件夹下载该文件。为什么您的Ajax调用采用POST格式。路径应该是GETI我在ajax中使用了POST方法,因为我必须先给出生成excel文件的输入。从公用文件夹而不是存储中下载文件的代码是什么?