当前位置:首页 > 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 头信息
  • 大文件下载建议显示进度条提示用户

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

相关文章

php下载文件实现

php下载文件实现

PHP 下载文件实现方法 使用 header() 函数强制下载 设置合适的 HTTP 头信息,强制浏览器下载文件而非直接打开。 $file_path = '/path/to/file.pdf'; $…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue实现文件功能

vue实现文件功能

Vue 实现文件上传功能 使用 Vue 实现文件上传功能可以通过原生 HTML 的 <input type="file"> 结合 Vue 的事件处理和 HTTP 请求库(如 Axios)来…

vue 实现文件地址

vue 实现文件地址

Vue 实现文件下载功能 在Vue中实现文件下载功能通常可以通过前端直接触发下载或通过后端API返回文件流。以下是几种常见方法: 前端直接下载(适用于公开URL) 对于已知的公开文件URL,可以直接…

vue前端实现文件预览

vue前端实现文件预览

Vue 前端实现文件预览的方法 图片预览 使用 <input type="file"> 结合 URL.createObjectURL() 实现本地图片预览: <template&g…

vue语音文件播放实现

vue语音文件播放实现

实现语音文件播放的方法 在Vue中实现语音文件播放可以通过HTML5的<audio>元素或JavaScript的Audio对象来完成。以下是几种常见的实现方式。 使用HTML5的audi…