当前位置:首页 > VUE

vue实现本地文件下载

2026-01-22 11:32:56VUE

Vue 实现本地文件下载

方法一:使用 <a> 标签下载

通过动态创建 <a> 标签并设置 download 属性实现文件下载。

<template>
  <button @click="downloadFile">下载文件</button>
</template>

<script>
export default {
  methods: {
    downloadFile() {
      const link = document.createElement('a');
      link.href = '/path/to/file.pdf'; // 文件路径
      link.download = 'filename.pdf'; // 下载文件名
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    }
  }
};
</script>

方法二:使用 Blob 对象下载

适用于动态生成文件内容或从 API 获取文件数据的情况。

vue实现本地文件下载

<template>
  <button @click="downloadBlob">下载 Blob 文件</button>
</template>

<script>
export default {
  methods: {
    downloadBlob() {
      const content = 'Hello, World!'; // 文件内容
      const blob = new Blob([content], { type: 'text/plain' });
      const url = URL.createObjectURL(blob);

      const link = document.createElement('a');
      link.href = url;
      link.download = 'example.txt';
      document.body.appendChild(link);
      link.click();

      document.body.removeChild(link);
      URL.revokeObjectURL(url);
    }
  }
};
</script>

方法三:通过后端 API 下载

适用于需要从后端获取文件的场景。

<template>
  <button @click="downloadFromAPI">从 API 下载</button>
</template>

<script>
import axios from 'axios';

export default {
  methods: {
    async downloadFromAPI() {
      try {
        const response = await axios.get('/api/download', {
          responseType: 'blob'
        });

        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement('a');
        link.href = url;
        link.download = 'api-file.pdf';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
        URL.revokeObjectURL(url);
      } catch (error) {
        console.error('下载失败:', error);
      }
    }
  }
};
</script>

方法四:使用 FileSaver.js 库

通过第三方库 file-saver 简化下载逻辑。

vue实现本地文件下载

安装依赖:

npm install file-saver

使用示例:

<template>
  <button @click="saveFile">使用 FileSaver 下载</button>
</template>

<script>
import { saveAs } from 'file-saver';

export default {
  methods: {
    saveFile() {
      const content = new Blob(['FileSaver 示例内容'], { type: 'text/plain' });
      saveAs(content, 'example.txt');
    }
  }
};
</script>

注意事项

  • 文件路径需确保正确,相对路径需基于项目部署结构。
  • 跨域文件下载可能受浏览器安全策略限制。
  • 动态生成文件时需注意 Blob 的 MIME 类型设置。
  • 大文件下载建议分块处理或显示下载进度。

标签: 本地文件vue
分享给朋友:

相关文章

vue实现分页

vue实现分页

Vue实现分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。 <template> <e…

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Token…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue实现socket

vue实现socket

Vue 中实现 WebSocket 通信 在 Vue 项目中实现 WebSocket 通信可以通过原生 WebSocket API 或第三方库(如 socket.io-client)完成。以下是两种常…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</…