【发布时间】:2019-01-02 00:10:02
【问题描述】:
我正在开发一个带有 Laravel 后端 API 的 Vue 应用程序。单击链接后,我想调用服务器以下载某个文件(大多数情况下是 PDF 文件)。当我使用axios 发出get 请求时,我会在响应正文中得到一个PDF 作为回报。我想直接下载那个文件。
为了让您更好地了解响应的样子:
(注意:我知道真实的文本响应比图像更好,但由于实际 PDF 内容的长度,我看不到任何返回它的方法..)
有什么方法可以使用 JavaScript 或其他方式下载该文件吗?它必须是特定的直接下载,而无需再次单击该按钮。
代码
// This method gets called when clicking on a link
downloadFile(id) {
const specificationId = this.$route.params.specificationId;
axios
.get(`${this.$API_URL}/api/v1/suppliersmanagement/product-specifications/${specificationId}/fileupload/${id}/download`, {
headers: this.headers,
})
.then(response => {
console.log(response);
// Direct download the file here..
})
.catch(error => console.log(error));
},
【问题讨论】:
-
看看this link。虽然它在 asp.net 中,但您的服务器代码应该正确设置标题,以便客户端引起提示或显示 pdf。
标签: javascript http vue.js axios