Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5通过AJAX下载存储/导出下的excel文件(maatwebsite/excel)_Laravel_Laravel 5 - Fatal编程技术网

Laravel 5通过AJAX下载存储/导出下的excel文件(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

我想下载一个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($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文件的输入。从公用文件夹而不是存储中下载文件的代码是什么?