一、文件转base64,代码:

axios({
method: 'get',
url: apiPath.common.downloaddUrl,
responseType: 'blob'
}).then(res => {
  console.log(res)
if (res && res.data && res.data.size) {
const dataInfo = res.data
let reader = new FileReader()
reader.readAsDataURL(dataInfo)
reader.onload = function (e) {
const result = e.target.result
    console.log(result) // 打印base64链接
}
} else {
   // 文件损坏或是提示处理
 }
}) Tips、关键点:
1、在一个请求中添加 responseType 为 blob
2、利用 new FileReader() 处理转化获得

二、文件转blob对象链接,代码:

axios({
method: 'get',
url: xxx,
responseType: 'blob'
}).then(res => {
  console.log(res)
if (res && res.data && res.data.size) {
const dataInfo = res.data
  const blob = new Blob([dataInfo], {type: dataInfo.type})
  const u = window.URL.createObjectURL(blob)
  console.log(u) // 转化后的链接
} else {
   // 文件损坏或是提示处理
 }
}) Tips、关键点:
1、在一个请求中添加 responseType 为 blob
2、利用 new Blob() 处理转化获得

三、文件转blob对象链接后下载,代码:

axios({
method: 'get',
url: xxx,
responseType: 'blob'
}).then(res => {
  console.log(res)
if (res && res.data && res.data.size) {
const dataInfo = res.data
   const blob = new Blob([dataInfo], {type: dataInfo.type})
   const u = window.URL.createObjectURL(blob)
   console.log(u) // 转化后的链接
   let a = document.createElement('a') // 动态创建a链接
  document.body.appendChild(a)
a.href = u
let setDownloadName = 'download' // 默认下载的文件名
downloadName && (setDownloadName = downloadName) // downloadName 为方法传进行的值,动态命名。
a.download = setDownloadName
a.click()
window.URL.revokeObjectURL(u) // 移除动态创建的a链接
} else {
   // 文件损坏或是提示处理
 }
}) Tips、关键点:
1、在一个请求中添加 responseType 为 blob
2、利用 new Blob() 处理转化获得
3、动态创建a链接,并模拟点击
4、如果需要直接跳转展示,可把a.download 的相关处理去掉即可

四、base64文件转blob对象链接,代码:

const b64File = 'data.....'
const contentType = url.substring(5, url.indexOf(';base64')) // 截取文件类型
const b64Data = b64File.substring(b64File.indexOf(',') + 1) // 获得文件头外的数据
const byteCharacters = atob(b64Data)
const byteNumbers = new Array(byteCharacters.length)
for (let i = 0; i < byteCharacters.length; i++) {
  byteNumbers[i] = byteCharacters.charCodeAt(i)
}
const byteArray = new Uint8Array(byteNumbers)
const blob = new Blob([byteArray], {type: contentType})
const u = window.URL.createObjectURL(blob) // 获得的链接
Tips、关键点:
1、在base64文件中获得文件类型及真正的文件数据
2、利用字节数组处理转化获得

最新文章

  1. PowerDesigner(数据建模)使用大全
  2. nodejs安装和环境部署
  3. 学习Linux系列--布署常用服务
  4. css使一行文字竖向排列
  5. The report for triangle problem
  6. Hibernate之jpa实体映射的三种继承关系
  7. C++ 简单 Hash容器的实现
  8. Ubuntu下部署java JDK和eclipse IDE
  9. Android学习笔记_点九绘图与软键盘和事件传递
  10. 2017-3-28 javaScript DOM 操作
  11. elipse使用,Java和Javaee模式区别
  12. 微信小程序开发(4) 企业展示
  13. (四) 天猫精灵接入Home Assistant-ESP-WIFI模块通过mqtt协议接入HASS
  14. Python Django 学习 (二) 【Django 模型】
  15. 7.2内存管理-ARC
  16. day05_雷神_函数进阶
  17. NFS 系统的搭建
  18. jenkins自动化部署
  19. qt——exec()的基本用法
  20. 说说eclipse调优,缩短启动时间

热门文章

  1. opencart忘记登录密码怎么办
  2. 如何让wordpress后台搜索只匹配搜索文章标题
  3. webpack 的安装与使用
  4. python paramiko模块简介及安装
  5. 最短路径 | 1003 dfs 或 dij ,单源最短路径条数与经过的点权最大
  6. JVM系列之二:编译过程
  7. Java 签名验签工具类
  8. Maven 教程(18)— 利用 Profile 构建不同环境的部署包
  9. angular get 数据请求
  10. Java-关于接口调用的处理