base64、File、Blob、ArrayBuffer 互转

file 对象转 base64

  1. let reader = new FileReader();
  2. reader.readAsDataURL(file[0])
  3. console.log(reader)

base64 转成 blob 上传

  1. function dataURItoBlob(dataURI) {
  2. var byteString = atob(dataURI.split(',')[1]);
  3. var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
  4. var ab = new ArrayBuffer(byteString.length);
  5. var ia = new Uint8Array(ab);
  6. for (var i = 0; i < byteString.length; i++) {
  7. ia[i] = byteString.charCodeAt(i);
  8. }
  9. return new Blob([ab], { type: mimeString });
  10. }

blob 转成 ArrayBuffer

  1. let blob = new Blob([1,2,3,4])
  2. let reader = new FileReader();
  3. reader.onload = function(result) {
  4. console.log(result);
  5. }
  6. reader.readAsArrayBuffer(blob);

buffer 转成 blob

  1. let blob = new Blob([buffer])

base64 转 file

  1. const base64ConvertFile = function (urlData, filename) { // 64转file
  2. if (typeof urlData != 'string') {
  3. this.$toast("urlData不是字符串")
  4. return;
  5. }
  6. var arr = urlData.split(',')
  7. var type = arr[0].match(/:(.*?);/)[1]
  8. var fileExt = type.split('/')[1]
  9. var bstr = atob(arr[1])
  10. var n = bstr.length
  11. var u8arr = new Uint8Array(n)
  12. while (n--) {
  13. u8arr[n] = bstr.charCodeAt(n);
  14. }
  15. return new File([u8arr], 'filename.' + fileExt, {
  16. type: type
  17. });
  18. }