Base64转文件

... 2025-7-10 Code 小于 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

# 文件对象下载

/** 下载文件
 *  @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
上次编辑于: 2025年7月10日 04:01
贡献者: HugStars