当前位置:首页 > VUE

vue文件下载实现方式

2026-02-23 19:46:50VUE

使用 Blob 对象和 URL.createObjectURL

通过后端接口获取文件流后,前端将响应数据转换为 Blob 对象,生成临时 URL 并触发下载。

axios.get('/api/download', { responseType: 'blob' }).then(response => {
  const blob = new Blob([response.data])
  const url = window.URL.createObjectURL(blob)
  const link = document.createElement('a')
  link.href = url
  link.download = 'filename.ext'
  link.click()
  window.URL.revokeObjectURL(url)
})

使用 FileSaver.js 库

安装 FileSaver 库简化下载流程,支持大文件下载和自定义文件名。

vue文件下载实现方式

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

axios.get('/api/download', { responseType: 'blob' }).then(response => {
  saveAs(new Blob([response.data]), 'custom_filename.ext')
})

处理后端返回的文件流

当后端返回文件流时,确保设置正确的响应类型和请求头。

axios({
  url: '/api/download',
  method: 'GET',
  responseType: 'blob',
  headers: {
    'Content-Type': 'application/octet-stream'
  }
}).then(response => {
  // 处理下载逻辑
})

处理进度显示

添加进度条功能提升用户体验,适用于大文件下载场景。

vue文件下载实现方式

axios.get('/api/download', {
  responseType: 'blob',
  onDownloadProgress: progressEvent => {
    const percent = Math.round((progressEvent.loaded / progressEvent.total) * 100)
    console.log(`下载进度: ${percent}%`)
  }
}).then(response => {
  // 文件下载完成处理
})

处理错误情况

添加错误处理逻辑应对网络异常或服务端错误。

axios.get('/api/download', { responseType: 'blob' })
  .then(response => {
    // 成功处理
  })
  .catch(error => {
    console.error('下载失败:', error)
    if (error.response.status === 404) {
      alert('文件不存在')
    }
  })

浏览器兼容性处理

针对 IE 浏览器的特殊处理方案。

if (window.navigator.msSaveOrOpenBlob) {
  // IE专用方法
  window.navigator.msSaveBlob(new Blob([response.data]), 'filename.ext')
} else {
  // 标准浏览器方法
  const link = document.createElement('a')
  // ...正常下载逻辑
}

标签: 方式文件
分享给朋友:

相关文章

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件实现文件树 递归组件是Vue中实现文件树的常见方法。通过组件自身调用自身,可以处理嵌套的目录结构。 <template> <div>…

js实现文件的上传

js实现文件的上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。HTML部分需要包含一个文件选择控件和一个提交按…

vue 实现文件下载

vue 实现文件下载

使用 window.open 方法 通过 window.open 直接打开文件链接触发下载,适用于已知文件 URL 的情况: window.open('文件URL', '_blank') 使用 &l…

vue实现搜索文件

vue实现搜索文件

Vue 实现搜索文件功能 在 Vue 中实现文件搜索功能,可以通过以下步骤完成。这里假设文件数据存储在本地或通过 API 获取。 数据准备 确保有一个文件列表数据,可以是静态数据或从后端 API 获…

vue文件树实现

vue文件树实现

Vue 文件树实现 实现文件树功能通常需要递归组件和动态数据加载。以下是一个基于 Vue 3 的完整实现方案: 数据结构设计 文件树的数据结构通常为嵌套对象数组,每个节点包含以下属性: c…

vue iview实现方式

vue iview实现方式

Vue + iView 实现方式 安装 iView 在 Vue 项目中安装 iView 库,可以通过 npm 或 yarn 进行安装: npm install view-ui --save 或 y…