怎么说浏览器开始下载文件?

时间:2019-03-31 20:35:38

标签: javascript laravel laravel-5

使用客户端,我向Laravel发送POST请求以将文件返回到浏览器:

$headers = [
             'Content-Type' => 'application/vnd.ms-excel',
             'Content-Disposition' => "attachment; filename='Report.xls'"
        ];

        return response()->download(storage_path('app/'.$path.$filename), $filename, $headers);

它会返回二进制文件作为响应:

enter image description here

响应标题为:

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试使用:

return Storage::download('file.jpg', $name, $headers);

参考:https://laravel.com/docs/5.8/filesystem#downloading-files

编辑1:

可能的解决方案:

创建一条路线来获取xls文档(使用GET http方法),例如他的名字,该人返回:

return Storage::download('file.jpg', $name, $headers);

执行POST请求,返回204 http代码并带有Location标头。

return response()->header('Location', $url)

调用AJAX成功事件时,请执行以下操作:

success: function(data, textStatus, request) {
    window.open(request.getResponseHeader('Location'), '_blank');
}