文件转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 ...
随机推荐
- eclipse---之Console窗口命令行输入
在 Eclipse 中使用 Windows 命令行. 第一步:设置一个新的外部配置工具 在 Eclipse 中,选择 “Run -> External Tools -> External ...
- selenium 加载出新的窗口
加载出新的窗口的时候 在点击某一个按钮的时候 有些时候会加载出新的页面 此时直接定位是定位不到的 就比如一开始在 1窗口定位 后来跳转到了2窗口,需要在2窗口上定位元素,此时就要先切换到2窗口 这里引 ...
- java面试题——高级篇
一.集合 Hashmap的原理 源码分析参考文章:http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html 题目参考文章:htt ...
- spring boot 启动原理详细解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类 1 @SpringBootApplication 2 public class Application { 3 public stat ...
- ArcGIS Server浏览地图服务无响应原因分析说明
1.问题描述 从4月17号下午5时起,至18号晚9点,客户单位部分通过ArcGIS Server发布的地图服务(该部分地图服务的数据源为数据库SJZX)无法加载浏览,表现为长时间无响应.同时,通过Ar ...
- CountDownLatch源码
public class CountDownLatchExample1 { public static void main(String[] args) throws Exception { Exec ...
- html5 audio标签切换播放音乐的方法
html5 audio标签切换播放音乐的方法<pre><audio id="music1" preload loop="loop">&l ...
- C# 使用CefSharp嵌入网站
最近有一个项目,需要在winform中嵌套web网站,从网上了解到几个相关的组件有winform自带的IE内核的WebBrowser,有第三方组件谷歌内核的webkit.cefsharp.chromi ...
- JavaSE 面试题: 成员变量与局部变量
JavaSE 面试题 成员变量与局部变量 public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } p ...
- 不能随便用get和set
有些对象呢,保存一半.如果你只提供get和set,那么备份不了数据. previousState的get和set还是最新的 wtforms InputRequired: DataRequired: i ...