Base64转文件
... 2025-7-10 小于 1 分钟
# 将 base64 转换为文件对象
/** 将base64转换为文件对象
* @param {String} base64 base64字符串
**/
function convertBase64ToBlob(base64) {
var base64Arr = base64.split(',')
var type = ''
var base64String = ''
if (base64Arr.length > 1) {
//如果是文件base64,去掉头信息
base64String = base64Arr[1]
type = base64Arr[0].substring(
base64Arr[0].indexOf(':') + 1,
base64Arr[0].indexOf(';')
)
}
// 将base64解码
var bytes = atob(base64String)
var bytesCode = new ArrayBuffer(bytes.length)
// 转换为类型化数组
var byteArray = new Uint8Array(bytesCode)
// 将base64转换为ascii码
for (var i = 0; i < bytes.length; i++) {
byteArray[i] = bytes.charCodeAt(i)
}
// 生成Blob对象(文件对象)
return new Blob([bytesCode], { type: type })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 文件对象下载
/** 下载文件
* @param {String} base base64字符串
* @param {String} filename 文件名
**/
function toFile(base, filename) {
if (!base) return
if (!filename) return alert('请输入文件名称')
var b = convertBase64ToBlob(base)
objectUrl = window.URL.createObjectURL(b)
a = document.createElement('a')
a.href = objectUrl
a.download = filenameInput.value
a.click()
a.remove()
window.URL.revokeObjectURL(objectUrl)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16