Laravel Excel下载不起作用

时间:2018-02-24 10:33:44

标签: php laravel download axios laravel-excel

问题与此处描述的问题相同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

但无论我做什么或尝试更改下载,都不会开始。

2 个答案:

答案 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';
       });
}