获取文件名下载并兼容IE(文件流)

// 下载证件照片async download(id) {const vm = this;const res = await commonApi.downloadAttachment({ids: [id]});if (res.status === 200) {if (res.data) {let fileName = "";let disposition = res.headers["content-disposition"];if (disposition) {let respcds = disposition.split(";");for (let i = 0; i < respcds.length; i++) {let header = respcds[i];if (header !== null && header !== "") {let headerValue = header.split("=");if (headerValue !== null && headerValue.length > 0) {if (headerValue[0].toLowerCase() === "filename") {fileName = decodeURI(headerValue[1]);break;}}}}}let blob = new Blob([res.data]);if (myBrowser() === "IE" || myBrowser() === "Edge") {window.navigator.msSaveOrOpenBlob(blob, fileName);return false;}let link = document.createElement("a");link.href = window.URL.createObjectURL(blob);link.download = fileName;link.click();window.URL.revokeObjectURL(link.href);} else {vm.$message.error("下载错误,请重试或联系管理员");}}}// 判断浏览器类型
function myBrowser() {const userAgent = navigator.userAgent; // 取得浏览器的userAgent字符串
const isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera) {return "Opera";
}
if (userAgent.indexOf("Firefox") > -1) {return "FF";
}
if (userAgent.indexOf("Chrome") > -1) {return "Chrome";
}
if (userAgent.indexOf("Safari") > -1) {return "Safari";
}
if (userAgent.indexOf("compatible") > -1 &&userAgent.indexOf("MSIE") > -1 &&!isOpera
) {return "IE";
}
if (userAgent.indexOf("Trident") > -1) {return "Edge";
}
return "";
}

获取文件名下载并兼容IE(文件流)相关推荐

  1. element一次上传多个文件,并将文件名展示出来;使用文件流进行下载

    1.文件批量上传 <el-form-item label="项目资料:" prop="attachmentVos"><!-- 上传的文件进行回 ...

  2. vue 后台返回的文件流进行预览_vue项目-pdf预览和下载,后台返回文件流形式

    背景:正好最近碰到了这种需求,记录下来,方便以后查看. 后端返回的文件流数据如下图所示: 后台返回数据.png 一.pdf的预览 一开始的时候百度了很多方法,有建议用pdfJs插件的,有iframe嵌 ...

  3. vue+axios 实现Excel下载,并解析文件流

    功能:导出表格数据,形成一个excel文件,可打开查看内容. 1. axios请求设置头部和请求方法 const serviceHttp = axios.create({baseURL: proces ...

  4. 客户端请求下载,服务端响应下载请求并返回文件流

    工作中遇到这样的需求: 1.A项目提供下载服务 2.B项目封装A项目的下载服务 3.通过B项目来下载文件. 遇到的场景是:只有A服务可以下载文件,这里ip 限制,其他的服务器无法直接下载文件,这里类似 ...

  5. 功能需求-根据页面生成pdf,pdf不需要下载只需把文件流上传到服务器

    前言 根据自身当下技术的水平和实际情况,做一个简单的记录. 需求描述 在项目中有采购合同和销售合同,这些合同新建好之后都需要有人去审核,审核通过后需要把合同生成一个pdf文件然后后端给保存起来 在项目 ...

  6. java 获取文件名长度_利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性...

    利用Java文件类File的方法,获取磁盘文件的文件名.长度.大小等特性. 如题,大神们谁可以编写一个这样的java程序?     happy530755 | 浏览 1482 次 |举报 我 ...

  7. js下载文件流,提示文件损坏问题

    记录一下前端下载后端返回的文件流,提示文件损坏问题. const blob = new Blob([content.data], {// type是需要对应的文件类型type:"applic ...

  8. bat修改文件内容_批量获取文件名,这几招太高效了!

    每周末整理好重点报告库内容后,风弦都会发一篇推文,文章中为大家列出本周收录报告的清单. 有朋友就很好奇,我是怎么获取这么多文件的文件名的,复制粘贴么?当然,不是!重点报告库每周收录100+最新报告,复 ...

  9. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

最新文章

  1. c语言仪器仪表课程设计,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  2. 江西财经计算机应用杨教授,江西财经大学信息管理学院研究生导师介绍:刘德喜...
  3. 我们并没有觉得MapReduce速度慢,直到Spark出现
  4. 搜索的php mysql代码生成器_四款强大的PHP代码生成器
  5. 目标检测——YOLOv5的学习笔记
  6. python(day04)
  7. IDEA 查看源码快捷键
  8. UVa 12174 (滑动窗口) Shuffle
  9. 为什么微信无法打开html文件,微信网页版打不开怎么办?微信网页版无法打开的解决方法...
  10. win10下使用opencv4.5.0 cuda版本编译和目标检测的几个问题
  11. 计算机功能键盘使用方法,键盘的使用方法介绍 键盘上都有哪些功能按键
  12. Android开发 RFC 2136 DNS动态更新协议
  13. 又是一江春水自东流!
  14. 大数据Python基础学习——练习(二)
  15. 《A Novel Approach to 3-D Gaze Tracking Using Stereo Cameras》论文阅读
  16. python余数不等于的符号_有乐 这些符号如此重要,不知道就等于“白练琴”
  17. Python|求a + aa + aaa + … + aa…a的值
  18. 微信小程序请求的封装及跨域的解决。
  19. RecyclerView添加蒙板引导信息
  20. 供给、需求和弹性的三种应用

热门文章

  1. 不乱于心,不困于情,不畏将来,不念过往
  2. Python实现发送邮件(实现单发/群发邮件验证码)
  3. 安卓平板装MySQL_准备购入一部平板作为学习用具,有推荐的吗?
  4. 环洋调研报告-2021年全球元宇宙NFT行业调研及趋势分析报告
  5. 国防科技大学 计算机硬件技术基础,国防科技大学--操作系统教程【40讲】--罗宇...
  6. Nginx启动失败的几种错误处理
  7. C++是什么?怎么学?
  8. 玩转微信小程序 之 获取用户信息以及玩转基本列表渲染(2019/04/14)
  9. 项目记录——为沙特客户Android开发Google地图应用
  10. ABP Vnext 学习02-授权中心 重写Login 页面