文件转化
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); }