当前位置:首页 > VUE

vue实现流下载

2026-02-20 01:18:11VUE

流下载的实现方法

在Vue中实现流下载通常涉及从服务器获取二进制数据流,并将其转换为可下载的文件。以下是几种常见的方法:

使用axios实现流下载

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

使用fetch API实现流下载

fetch('/api/download')
  .then(response => response.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob)
    const a = document.createElement('a')
    a.href = url
    a.download = 'filename.ext'
    a.click()
    window.URL.revokeObjectURL(url)
  })

处理大文件下载

对于大文件下载,可以显示下载进度:

axios({
  method: 'get',
  url: '/api/large-file',
  responseType: 'blob',
  onDownloadProgress: progressEvent => {
    const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
    console.log(percentCompleted)
  }
}).then(response => {
  // 处理下载完成后的逻辑
})

后端配合要求

后端需要设置正确的响应头:

  • Content-Type: application/octet-stream
  • Content-Disposition: attachment; filename="filename.ext"

注意事项

确保在下载完成后释放创建的URL对象,避免内存泄漏。对于大文件下载,考虑使用分块下载或断点续传技术。

文件类型处理

根据不同的文件类型,可以设置不同的Blob类型:

new Blob([response.data], { type: 'application/pdf' }) // PDF文件
new Blob([response.data], { type: 'image/png' }) // PNG图片

错误处理

添加错误处理逻辑,捕获可能的网络错误或服务器错误:

axios({...}).catch(error => {
  console.error('下载失败:', error)
})

vue实现流下载

标签: vue
分享给朋友:

相关文章

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Obje…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue最佳实现

vue最佳实现

Vue 最佳实践 组件设计 组件应遵循单一职责原则,每个组件只负责一个功能模块。命名采用 PascalCase(如 UserProfile.vue),模板中使用 kebab-case(如 <us…