如何在Laravel中通过Ajax下载Excel文件?
How to download Excel file by Ajax in Laravel?
我用这个library导出Excel
我向端点发送 POST 请求,其中方法检索数据并创建文件:
return Excel::download(new EventsExport($request), $filename);
问题是我得到这个二进制文件作为响应,但浏览器没有开始下载它。
如何解决?
我认为正确的方法是将它存储在您的服务器上并发送 link 到您的 ajax 请求:
return response()->json([
'url' => 'url-to-stored-file'
]);
并且在 AJAX 响应中你可以这样做:
function(data) {
window.location.href = data.url;
}
我知道这不是更好的方法,但它有效
如果您将请求作为来自 SPA 的 AJAX 请求,则下载不会开始。您需要让端点接受 GET 请求和 link 用户 URL 或向您的 SPA 应用程序嵌入一个表单,该表单将对端点执行正常 POST。
我对angular一无所知,但如果你在laravel,你可以,
向您的控制器调用 ajax 请求
然后用您的数据创建一个 excel 临时文件。
然后只需通过此 header 下载即可。
header('Content-Type: text/csv');
echo file_get_contents('your_file_location_url');
如果需要,请取消链接您的临时文件
经过一番努力,这是我找到的最简单的解决方案
您的控制器
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');
希望对您有所帮助
$.ajax({
type : 'GET',
url : '/download-excel',
success:function(){
window.location.href = '/download-excel';
}
});
我用这个library导出Excel
我向端点发送 POST 请求,其中方法检索数据并创建文件:
return Excel::download(new EventsExport($request), $filename);
问题是我得到这个二进制文件作为响应,但浏览器没有开始下载它。
如何解决?
我认为正确的方法是将它存储在您的服务器上并发送 link 到您的 ajax 请求:
return response()->json([
'url' => 'url-to-stored-file'
]);
并且在 AJAX 响应中你可以这样做:
function(data) {
window.location.href = data.url;
}
我知道这不是更好的方法,但它有效
如果您将请求作为来自 SPA 的 AJAX 请求,则下载不会开始。您需要让端点接受 GET 请求和 link 用户 URL 或向您的 SPA 应用程序嵌入一个表单,该表单将对端点执行正常 POST。
我对angular一无所知,但如果你在laravel,你可以,
向您的控制器调用 ajax 请求
然后用您的数据创建一个 excel 临时文件。
然后只需通过此 header 下载即可。
header('Content-Type: text/csv');
echo file_get_contents('your_file_location_url');
如果需要,请取消链接您的临时文件
经过一番努力,这是我找到的最简单的解决方案
您的控制器
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');
希望对您有所帮助
$.ajax({
type : 'GET',
url : '/download-excel',
success:function(){
window.location.href = '/download-excel';
}
});