当前位置:首页 > 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 实现视频开场动画 在 Vue 中实现视频开场动画可以通过结合 HTML5 的 <video> 标签和 Vue 的过渡效果或生命周期钩子来完成。以下是具体实现方法: 安装依赖…

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue实现计时

vue实现计时

Vue 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterv…

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <tem…

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project…