我使用此library导出Excel
我将POST请求发送到端点,其中方法检索数据并创建文件:
return Excel::download(new EventsExport($request), $filename);
问题是我以二进制形式获取此文件,并且浏览器无法开始下载它。
如何解决?
答案 0 :(得分:1)
如果您是从SPA发出的AJAX请求,则下载将不会开始。您需要使端点接受GET请求并将用户链接到该URL,或者将表格嵌入到您的SPA应用中,以对端点进行常规POST。
答案 1 :(得分:1)
我对角球一无所知,但是如果您在laravel中可以,
调用ajax请求给您的控制器
然后使用您的数据创建一个临时的excel文件。
然后只需通过此标头下载即可。
header('Content-Type: text/csv');
echo file_get_contents('your_file_location_url');
然后根据需要取消链接临时文件
答案 2 :(得分:0)
我认为正确的方法是将其存储在服务器上并发送指向您的Ajax请求的链接:
return response()->json([
'url' => 'url-to-stored-file'
]);
在AJAX响应中,您可以执行以下操作:
function(data) {
window.location.href = data.url;
}
我知道这不是最好的方法,但是它可以工作
答案 3 :(得分:0)
经过一番挣扎,这是我找到的最简单的解决方案
您的控制器
return Excel::download(new EventsExport($request), $filename, null, [\Maatwebsite\Excel\Excel::XLS] );
您的前端
var data = match=3&win=false; //example
var url = "{{route($routeForYourExcel)}}?" + data;
window.open(url, '_blank');
希望有帮助
答案 4 :(得分:0)
$.ajax({
type : 'GET',
url : '/download-excel',
success:function(){
window.location.href = '/download-excel';
}
});