vue下载文件

367 阅读2分钟

要在Vue应用程序中调用下载文件接口并下载文件,你可以使用浏览器原生的FileSaver.js库。以下是一些简单的步骤:

  1. 安装FileSaver.js库:
npm install file-saver --save
  1. 导入FileSaver.js库:
import { saveAs } from 'file-saver';
  1. 发送下载请求并接收响应数据:
axios({
  url: 'http://your-download-url.com',
  method: 'GET',
  responseType: 'blob', // 设置响应类型为 blob
}).then(response => {
  // 处理响应数据
  saveAs(response.data, 'file-name.extension'); // 使用FileSaver.js保存文件
}).catch(error => {
  console.log(error);
});

在上面的代码中,我们首先使用Axios发送带有 responseType: 'blob' 的GET请求,以接收响应数据的Blob类型。然后,我们使用FileSaver.js的 saveAs() 方法将Blob数据保存为指定名称和扩展名的文件。

希望这可以帮助你下载文件。

除了使用FileSaver.js库之外,还有其他一些方法可以在Vue应用程序中下载文件。以下是其中的两种方法:

方法一:使用a标签下载文件

你可以使用HTML5的a标签来实现文件下载。这种方法的好处是你不需要引入任何外部库。

<a :href="downloadUrl" download>下载文件</a>

在上面的代码中,我们将文件下载链接设置为a标签的href属性,并设置download属性,这会提示浏览器下载文件而不是打开它。

然后,你可以在Vue中创建一个computed属性来动态生成下载链接:

computed: {
  downloadUrl() {
    return 'http://your-download-url.com'; // 替换成你的下载链接
  }
}

这个computed属性将动态生成下载链接,以确保每次下载请求的链接都是最新的。

方法二:使用Blob URL下载文件

另一种方法是使用Blob URL来下载文件。这种方法的好处是你可以更好地控制下载流程并进行更多的自定义。

axios({
  url: 'http://your-download-url.com',
  method: 'GET',
  responseType: 'blob',
}).then(response => {
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', 'file-name.extension');
  document.body.appendChild(link);
  link.click();
});

在上面的代码中,我们首先使用Axios发送带有 responseType: 'blob' 的GET请求,以接收响应数据的Blob类型。然后,我们使用 window.URL.createObjectURL() 方法将Blob数据转换为Blob URL。接下来,我们创建一个a标签并设置其href属性为Blob URL。我们还设置download属性以提示浏览器下载文件,将a标签添加到文档中并单击它以开始下载文件。

希望这些方法中的一个可以帮助你在Vue应用程序中下载文件。