请教一下关于使用 response ()->download ($pathToFile) 方式下载文件的一些问题

在Laravel+vue的项目中,我给前端提供了一下文件下载的接口,其中有使用到laravel中的download方法。

download 方法用于生成强制用户浏览器下载给定路径文件的响应。

//文件下载接口路由
Route::any('download', 'xxx\xxxController@downloadFile');
//路由对应的控制器方法
public function downloadFile(Request $request){
    //省略生成文件部分...
    return response()->download($pathToFile)->deleteFileAfterSend(true);
}

我所期望的是,前端调用此接口后,浏览器开始下载对应文件,并在文件下载完成后删除源文件。

结果是浏览器并没有开始下载文件,查看Network中对应的响应为:

请教一下关于使用response()->download($pathToFile) 方式下载文件的一些问题

我这样直接在接口中返回下载响应的方式是否正确?

如果正确,前端应该如何处理接口返回的下载响应,才能实现下载?

如果不正确,希望大家能提供一下其他的的方式


ps:在项目中有使用到JWT,我希望在下载文件时也要进行身份认证

AloneUtopia
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1
leo
axios.get('{url}'), {
    responseType: 'blob',
}).then(response => {
    const blob = response.data;
    const link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = '文件名';
    link.click();
    window.URL.revokeObjectURL(link.href)
})
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!