当前位置: 首页 > news >正文

vue3项目 前端文件下载的两种工具函数

1、Blob 流下载

Blob 表示不可变的原始数据的类文件对象,通常用于处理文件或大块二进制数据。

注意:js中还有一个二进制数据类型ArrayBuffer,它们的区别如下

  • Blob 可以位于磁盘、高速缓存内存和其他不可用的位置;ArrayBuffer 是存在内存中的,可以直接操作

  • Blob 对象是不可变的;而 ArrayBuffer 是可以通过 TypedArrays 或 DataView 来操作

  • 二者可以通过方法互相转换

  • Blob包含数据和 MIME 类型(标准化文件类型标识系统,用于描述文档、文件或字节流的性质和格式)信息;ArrayBuffer 不包含任何元数据(如文件类型),更接近计算机底层的二进制表示

具体见博文:Js:Blob、ArrayBuffer、FileReader、URL、Image、关于文件下载的方法案例-CSDN博客

/*** 下载Blob流文件方法* @param data* @param filename*/
export function downloadBlobFile(data, filename) {const fileName = filename + moment(new Date()).format('YYYYMMDD')const blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'})const objectUrl = URL.createObjectURL(blob)const a = document.createElement('a')a.style.display = 'none'a.href = objectUrla.setAttribute('download', fileName)document.body.appendChild(a)a.click()a.remove()URL.revokeObjectURL(objectUrl) // 释放内存
}

适用场景:

  • 后端返回二进制流(如 axios 请求设置 responseType: 'blob'

  • 需要前端生成文件并下载

  • 需要自定义文件名和文件类型

  • 处理动态生成的内容(如导出的Excel

使用示例:

 2、根据url下载文件

/***根据url下载文件*/
export function downloadFileByURL(url: string) {let endUrl = url// 不同模块不同路径if (url.includes('/api/web/csp')) {endUrl = import.meta.env.VITE_APP_API_PATH_RESOURCE + url} else {endUrl = import.meta.env.VITE_APP_API_PATH_USER + url}const a = document.createElement('a')a.setAttribute('target', '_self')a.style.display = 'none'a.href = endUrldocument.body.appendChild(a)a.click()a.remove()
}

 适用场景:

  • 下载服务器静态文件(如图片、PDF)

  • 文件已存在于服务器指定路径

  • 不需要前端处理文件内容

使用示例:

相关文章:

  • OpenCv高阶(二十)——dlib脸部轮廓绘制
  • 大预言模型提示词技巧:释放AI潜力的关键
  • REALTECK瑞昱推出RTS5411T USB3.2 Gen1x1 超高速 USB 集线器控制器原厂代理分销经销一级代理分销经销
  • 每日八股文
  • 吉林大学操作系统上级实验四(hash存储讲解及顺序存储文件管理实现)
  • 图像数据与显存
  • 宝塔安装WordPress程序
  • Python打卡第39天
  • 嵌入式学习笔记 - freeRTOS任务优先级抢占,时间片抢占的实现机制
  • 330130-045-00-00 Bently Nevada 3300 XL延长电缆
  • 小白成长之路-Linux日志管理
  • 【最小生成树】Prim 算法、Kruskal 算法
  • 数据中台系统是什么意思?如何实现数据中台的搭建?
  • CPU中断频繁导致红外信号失真:问题分析与解决方案
  • npm run build 报错:Some chunks are larger than 500 KB after minification
  • siglip2(2) Naflex模型的动态分辨率原理
  • STM32F103_Bootloader程序开发05 - Keil修改生成文件的路径与文件名,自动生成bin格式文件
  • InnoDB中的锁
  • 第三章:地下三层的技术遗产
  • MySQL ALTER TABLE 组合操作时导致的错误
  • 深圳贷款网站建设/网站制作工具有哪些
  • asp网站制作教程/湖北seo整站优化
  • 做网站的税率/湖南有实力seo优化
  • 政府网站源码/2021热门网络营销案例
  • 做网站如何挣钱/徐州百度搜索网站排名
  • 做美国市场哪个网站好/大金seo