文件转base64处理或转换blob对象链接
一、文件转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、利用字节数组处理转化获得
文件转base64处理或转换blob对象链接的更多相关文章
- HTML5新特性之文件和二进制数据的操作 Blob对象
HTML5新特性之文件和二进制数据的操作 1.Blob对象 2.FileList对象 3.File对象 4.FileReader 对象 5.URL对象
- MP4视频流base64数据转成Blob对象
网上一大堆对图片base64转Blob.File的方法 很少有视频mp4转的,可能是因为原理相同的原因吧!但在项目中针对视频流base64转Blob对象时,花了好长时间才成功,特专门记录一下! APP ...
- Base64图片转Blob对象
//将Base64图片转成Blob对象 //@args: base64Url:编码字符串,contentType:类型. function base64UrltoBlob(base64Url, con ...
- [转] Meida视频加密二-Blob对象
2. blob 1 <video src="blob:http://www.bilibili.com/d0823f0f-2b2a-4fd6-a93a-e4c82173c107" ...
- 『现学现忘』Git对象 — 15、blob对象介绍
目录 (一)Git对象的存放目录 (二)Git中对象类型 (三)blob对象 1.blob对象说明 (1)blob对象定义 (2)blob对象说明 (3)blob对象存储的方式 (4)查看blob对象 ...
- js,JQ 图片转换base64 base64转换为file对象,blob对象
//将图片转换为Base64 function getImgToBase64(url,callback){ var canvas = document.createElement('canvas'), ...
- uniapp中拿到base64转blob对象,或base64转bytes字节数组,io操作写入字节流文件bytes
1. uniAPP中拿到附件的base64如何操作,如word文件 /*** 实现思路:* 通过native.js的io操作创建文件,拿到平台绝对路径* 再通过原生类进行base64解码,拿到字节流b ...
- JS实现图片base64转blob对象,压缩图片,预览图片,图片旋转到正确角度
base64转blob对象 /** 将base64转换为文件对象 * @param {String} base64 base64字符串 * */ var convertBase64ToBlob = f ...
- Taro文件上传:Blob Url下载Blob对象本身并通过接口上传到服务器
最近项目的文件上传遇到一个问题,就是Taro的chooseImage传给回调的是一个Blob对象,一般来说,上传控件都会导出Data Url,而Taro给了一个Blob Url,问题在于,我直接令im ...
随机推荐
- Kdevelop的安装-2种方法
使用 Ubuntu 的自带的源: sudo apt-get update sudo apt-get install kdevelop 这就可以了.update这部,假如不换源,更新非常慢.换源方法很简 ...
- robot framework Selenium2library wait小问题
最近在使用selenium2Library时,用到其中的 Wait Until Page函数,因我们的网页相对比较敏感,经常获取不到,不明觉历 看看源码吧,如下: def wait_until_pag ...
- 【java异常】Unable to install breakpoint in
这个是断点失效,把那个断点双击清理掉就完了. 具体原因,以后再写.
- 【myBatis】It's likely that neither a Result Type nor a Result Map was specified.
因为mapper.xml里把resultType写成了parameterType
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- Fish eating fruit 沈阳网络赛(树形dp)
Fish eating fruit \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 大体的题意就是给出一棵树,求每一对点之间的距离 ...
- date命令的FORMAT中输入空格的几种方法
1.date +%Y-%m-%d\ (一个空格)%H:%M:%S 此命令中用了转义字符 \ ,将空格转义出来 2.date +%Y-%m-%d' '%H:%M:%S 此命令中的单引号内可以是一个或多 ...
- UNIX网络编程卷1 - >环境搭建(ubuntu16.04)
学习unp网络编程,树上的例子均存在#include“unp.h”,故需要对环境进行配置. 1.到资源页下载www.unpbook.com 2.解压并将unpv13e移动到相应的文件夹下 (因为我 ...
- 不了解这12个语法糖,别说你会Java!
阅读本文大概需要 10 分钟. 作者:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语 ...
- TCP、UDP和HTTP区别详解
http:是用于www浏览的一个协议.tcp:是机器之间建立连接用的到的一个协议. 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.R ...