当前位置:首页 > VUE

vue实现get下载

2026-01-16 02:21:32VUE

Vue 实现 GET 下载

使用 window.open 直接触发下载
适用于简单的 GET 请求下载,无需处理复杂逻辑。直接将文件 URL 通过 window.open 打开,浏览器会自动处理下载。

downloadFile() {
  const fileUrl = 'https://example.com/file.pdf';
  window.open(fileUrl, '_blank');
}

通过 axios 发送 GET 请求并处理二进制流
适用于需要添加请求头或处理后端返回的二进制流数据。

vue实现get下载

import axios from 'axios';

downloadFile() {
  axios({
    url: 'https://example.com/file.pdf',
    method: 'GET',
    responseType: 'blob', // 关键:指定响应类型为二进制流
    headers: {
      Authorization: 'Bearer your_token' // 可选:添加认证头
    }
  }).then(response => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'filename.pdf'); // 设置下载文件名
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    window.URL.revokeObjectURL(url); // 释放内存
  });
}

处理动态文件名
若需从响应头中获取文件名(如后端通过 Content-Disposition 返回文件名):

vue实现get下载

const fileName = response.headers['content-disposition']
  ? response.headers['content-disposition'].split('filename=')[1]
  : 'default.pdf';
link.setAttribute('download', fileName);

注意事项

  • 跨域问题:确保后端配置了 CORS 允许前端域名访问。
  • 大文件下载:建议分片下载或使用后端提供的断点续传接口。
  • 错误处理:添加 catch 块处理网络或权限错误。

完整封装示例

async downloadFile(url, fileName = '') {
  try {
    const response = await axios({
      url,
      method: 'GET',
      responseType: 'blob'
    });
    const actualFileName = fileName || 
      response.headers['content-disposition']?.split('filename=')[1] || 
      'download';
    const blobUrl = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = blobUrl;
    link.download = actualFileName;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    window.URL.revokeObjectURL(blobUrl);
  } catch (error) {
    console.error('Download failed:', error);
  }
}

标签: vueget
分享给朋友:

相关文章

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…

vue实现滚动显示

vue实现滚动显示

Vue 实现滚动显示的几种方法 在 Vue 中实现滚动显示可以通过多种方式实现,以下是几种常见的方法: 使用 CSS 动画 通过 CSS 的 animation 属性结合 @keyframes 实现…

vue 实现文字滚动

vue 实现文字滚动

Vue 实现文字滚动效果 使用CSS动画实现 通过CSS的@keyframes和transform属性实现文字滚动效果: <template> <div class="scro…