当前位置:首页 > VUE

vue实现本地文件下载

2026-02-23 02:32:48VUE

使用 <a> 标签下载

通过动态创建 <a> 标签并设置 download 属性实现文件下载。适用于已知文件路径或 Blob 数据:

vue实现本地文件下载

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

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

使用 Blob 对象下载二进制数据

适用于从 API 获取二进制数据(如后端返回文件流)的场景:

vue实现本地文件下载

<script>
export default {
  methods: {
    async downloadFromAPI() {
      const response = await fetch('/api/download')
      const blob = await response.blob()
      const url = URL.createObjectURL(blob)

      const a = document.createElement('a')
      a.href = url
      a.download = 'document.pdf'
      document.body.appendChild(a)
      a.click()
      document.body.removeChild(a)
      URL.revokeObjectURL(url)
    }
  }
}
</script>

使用 FileSaver.js 库

通过第三方库简化下载流程,支持更复杂的场景:

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

export default {
  methods: {
    saveFile() {
      const blob = new Blob(['文件内容'], { type: 'text/plain;charset=utf-8' })
      saveAs(blob, 'example.txt')
    }
  }
}
</script>

下载 Base64 编码文件

处理 Base64 格式的文件数据:

<script>
export default {
  methods: {
    downloadBase64() {
      const base64Data = 'data:application/pdf;base64,JVBERi0x...'
      const link = document.createElement('a')
      link.href = base64Data
      link.download = 'file.pdf'
      link.click()
    }
  }
}
</script>

注意事项

  • 跨域限制:非同源文件需要服务端配置 CORS 头
  • 移动端兼容性:部分移动浏览器可能限制程序化下载
  • 大文件处理:超过内存限制的文件建议分块下载
  • 安全策略:某些浏览器可能阻止混合内容(HTTP/HTTPS)的下载

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

相关文章

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本流程 在Vue单页面应用中实现登录功能,通常需要以下几个关键步骤: 创建登录表单组件 使用Vue的模板语法创建包含用户名和密码输入框的表单,并绑定数据到组件的data属性。 <…

django vue实现

django vue实现

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

vue实现详情

vue实现详情

Vue 实现详情页的常见方法 使用动态路由 在 Vue Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:i…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…

vue实现suspense

vue实现suspense

Vue 3 中实现 Suspense Suspense 是 Vue 3 引入的一个内置组件,用于处理异步依赖的加载状态。它允许在等待异步组件或异步数据加载时显示一个后备内容(fallback),直到异…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…