当前位置:首页 > 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')
  // ...正常下载逻辑
}

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

相关文章

旋转相册制作css文件

旋转相册制作css文件

旋转相册制作CSS文件 旋转相册通常通过CSS动画和3D变换实现,以下是一个完整的CSS文件示例,用于创建一个3D旋转相册效果。 基础HTML结构 在CSS文件之前,需确保HTML结构包含相册容器…

实现.vue文件

实现.vue文件

创建Vue单文件组件 Vue单文件组件(.vue文件)是Vue.js框架的核心特性之一,它将模板、脚本和样式封装在一个文件中。一个典型的.vue文件结构包含三个部分:<template>、…

jquery文件

jquery文件

jQuery文件获取与使用 jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。以下是获取和使用jQuery文件的方法。 下载jQuery文…

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件 t…

vue实现文件分享

vue实现文件分享

Vue 实现文件分享功能 前端文件上传与展示 使用 Vue 和 Element UI 实现文件上传组件,允许用户选择文件并上传到服务器。 <template> <div>…

vue预览文件实现

vue预览文件实现

实现文件预览功能 在Vue中实现文件预览功能可以通过多种方式完成,具体取决于文件类型(图片、PDF、文档等)和需求。以下是几种常见实现方法: 图片文件预览 使用HTML5的FileReader AP…