问题与此处描述的问题相同Laravel Excel Download using Controller
但我简直无法相信没有使用其他资源就无法在Laravel中处理Excel下载。我已经能够在控制器中使用response()
来处理PDF的即时下载。
Mabybe标题错了?我的代码:
public function getFile($file) {
$path = storage_path('app/excel/exports/' . $file);
$headers = array('Content-Type' => File::mimeType($path));
return response()->download($path, $file, $headers);
}
因此,excel文件在我的存储文件夹中正确创建并保存(在上面的代码之前发生)。然后我使用axios.get
方法下载带有上述函数的文件。
我得到的标题:
接受-范围:字节 缓存控制:公众 连接:保持活跃 内容处置:附件;文件名=" test_file.xlsx" 内容长度:7066 内容类型:应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet
但无论我做什么或尝试更改下载,都不会开始。
答案 0 :(得分:1)
您可以尝试使用这两个标题。
return response()->download($path, $file, [
'Content-Type' => 'application/vnd.ms-excel',
'Content-Disposition' => "attachment; filename='Report.xls'"
]);
谢谢,
答案 1 :(得分:0)
我想解决它。
似乎无法通过对路由的简单axios.get
请求来解决此问题。相反,我需要直接用链接打开路线。
无法使用:
HTML
<button @click="downloadExcel()">Download Table as Excel File</button>
downloadExcel() {
axios.get('/customers/export');
}
简单的解决方案(而不仅仅是使用axios.get
):
<a :href="/customers/export"><button>Download Table as Excel File</button></a>
因此,也可以在axios请求后打开路径:
downloadExcel() {
let newWindow = window.open();
axios.get('/customers/export')
.then(response => {
newWindow.location = 'http://' + window.location.hostname + '/customers/export';
});
}