【发布时间】:2018-11-17 02:22:39
【问题描述】:
情况:
前端:Vue。后端:Laravel。
在网络应用程序中,我需要让用户下载某些 pdf 文件:
- 我需要 Laravel 获取文件并将其作为 API GET 请求的响应返回。
- 然后在我的 Vue Web 应用程序中,我需要获取文件并下载它。
代码:
API:
$file = public_path() . "/path/test.pdf";
$headers = [
'Content-Type' => 'application/pdf',
];
return response()->download($file, 'test.pdf', $headers);
网络应用:
downloadFile() {
this.$http.get(this.apiPath + '/download_pdf')
.then(response => {
let blob = new Blob([response.data], { type: 'application/pdf' })
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = 'test.pdf'
link.click()
})
}
结果:
使用此代码,我确实设法下载了一个 pdf 文件。问题是pdf是空白的。
不知何故,数据被损坏了(不是这个特定的 pdf 文件的问题,我尝试了几个 pdf 文件 - 结果相同)
来自服务器的响应:
来自服务器的响应本身很好:
PDF:
问题可能出在 pdf 文件上。它看起来肯定是损坏的数据。这是response.data 外观的摘录:
问题:
如何使用 Laravel for API 和 Vue for web app 正确下载 pdf 文件?
谢谢!
【问题讨论】:
标签: javascript php laravel pdf vue.js