当前位置:首页 > VUE

vue实现静态文件下载

2026-02-25 19:05:54VUE

使用 <a> 标签直接下载

通过 HTML 原生 <a> 标签的 download 属性实现静态文件下载。将文件路径设置为 public 目录下的路径,避免打包工具处理文件。

<template>
  <a href="/files/example.pdf" download>下载PDF文件</a>
</template>

文件需存放在项目根目录的 public/files 文件夹中,Vue 会直接将该目录内容复制到构建输出目录。

vue实现静态文件下载

通过 JavaScript 动态创建下载链接

使用 document.createElement 动态创建 <a> 标签并触发点击事件,适合需要条件触发下载的场景。

vue实现静态文件下载

methods: {
  downloadFile() {
    const link = document.createElement('a')
    link.href = '/files/example.pdf'
    link.download = 'custom-filename.pdf'
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
  }
}

使用 axios 处理文件下载

当需要先请求后端接口或处理授权时,可通过 axios 获取文件流并创建下载。

import axios from 'axios'

methods: {
  async downloadFile() {
    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 = 'file.pdf'
    link.click()
    window.URL.revokeObjectURL(url)
  }
}

使用第三方库 file-saver

对于更复杂的下载需求,可以引入 file-saver 库简化操作。

npm install file-saver
import { saveAs } from 'file-saver'

methods: {
  downloadFile() {
    const blob = new Blob([fileContent], { type: 'application/pdf' })
    saveAs(blob, 'filename.pdf')
  }
}

注意事项

  • 静态文件应存放在 public 目录而非 assets 目录,避免被 webpack 处理
  • 动态生成下载链接后需要及时释放对象 URL 防止内存泄漏
  • 跨域下载需确保服务器配置正确的 CORS 头信息
  • 大文件下载建议显示进度条提示用户

标签: 静态文件
分享给朋友:

相关文章

vue 实现文件目录

vue 实现文件目录

Vue 实现文件目录结构 Vue 项目通常采用模块化设计,合理的目录结构有助于代码维护和团队协作。以下是常见的 Vue 项目目录结构及说明: 基础目录结构(基于 Vue CLI 生成) pro…

如何编译react文件

如何编译react文件

编译 React 文件的方法 使用 Create React App (CRA) Create React App 是官方推荐的快速搭建 React 项目的工具,内置了 Babel 和 Webpack…

vue实现文件预览

vue实现文件预览

Vue 实现文件预览的方法 文件预览功能通常涉及图片、PDF、Office文档等多种格式的处理。以下是几种常见文件类型的实现方案: 图片预览 使用 <input type="file">…

vue实现静态化

vue实现静态化

Vue 实现静态化的方法 Vue 应用可以通过多种方式实现静态化,生成纯 HTML、CSS 和 JavaScript 文件,便于部署到静态服务器或 CDN。以下是几种常见的方法: 使用 Vue C…

vue实现文件进度

vue实现文件进度

Vue 实现文件上传进度 使用 Vue 实现文件上传进度可以通过结合 axios 或原生 XMLHttpRequest 的进度事件来实现。以下是两种常见方法: 使用 axios 上传文件并显…

vue实现静态页面

vue实现静态页面

Vue 实现静态页面的方法 使用 Vue 实现静态页面可以通过以下方式完成,无需后端交互,仅需前端渲染静态内容。 创建 Vue 项目 通过 Vue CLI 或 Vite 快速初始化项目: np…