文件转化

base64转blob

// 'data:application/apollo-zstd;version=1.1.1;base64,' 注意一下,后端返回的base64
export function base64ToBlob(base64: string): Blob {
  if (!base64) {
      return;
  }
  const mimeString = base64.split(',')[0]
      .split(':')[1]
      .split(';')[0];
  const byteString = atob(base64.split(',')[1]);
  const arrayBuffer = new ArrayBuffer(byteString.length);
  const intArray = new Uint8Array(arrayBuffer);
  for (let i = 0; i < byteString.length; i++) {
      intArray[i] = byteString.charCodeAt(i);
  }
  return new Blob([intArray], {type: mimeString});
}

base64转file

public dataURLtoFile(dataurl: any, filename: any): any {
    const arr = dataurl.split(',');
    const mime = arr[0].match(/:(.*?);/)[1];
    const bstr = atob(arr[1]);
    let n = bstr.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, { type: mime });
}

上传

 const blob = new Blob([this.file.nativeElement.files[0]], { type: '' });
 const formate = new FormData(); // 通过append(key,value)来添加数据
 this.file.nativeElement.value = '';//  用于多次上传,要清空之前的值

文件下载

const aBlob = new Blob( array, options ); 

export function downLoadFile(data: ArrayBuffer, fileNmame: string, type: string, fileType: string = 'xls'): void {
  const blob = new Blob([data], { type });
  const url = window.URL.createObjectURL(blob);
  const eleLink = document.createElement('a');
  eleLink.download = `${fileNmame}.${fileType}`;
  eleLink.style.display = 'none';
  eleLink.href = url;
  // 触发点击
  document.body.appendChild(eleLink);
  eleLink.click();
  // 然后移除
  document.body.removeChild(eleLink);
}

 

posted @ 2022-04-12 16:55  宇智波copy  阅读(52)  评论(0编辑  收藏  举报