实际开发中,常见pdf|word|excel等文件的预览和下载
实际开发中,常见pdf|word|excel等文件的预览和下载
- 背景
- 相关类型数据之间的转换
- 1、File转Blob
- 2、File转ArrayBuffer
- 3、Blob转ArrayBuffer
- 4、Blob转File
背景
实际开发中,大部分文件的预览会以流的方式传输,前端通过Element等UI库提供的上传组件传给后端
File
类型数据, 后端返回给前端Blob
/ArrayBuffer
类型数据 , 前端最终借助各种第三方工具或者自定义tool
方法, 实现各种类型文件的下载或者预览. 少部分的会以文件地址的方式进行传输, 那么我们直接访问那个文件url即可.
相关类型数据之间的转换
1、File转Blob
export function fileToBlob(file: File) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => {
const arrayBuffer: any = reader.result;
const blob = new Blob([arrayBuffer], { type: file.type });
resolve(blob);
};
reader.onerror = reject;
reader.readAsArrayBuffer(file);
});
}
2、File转ArrayBuffer
export function fileToArrayBuffer(file: File) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => {
const arrayBuffer: any = reader.result;
resolve(arrayBuffer);
};
reader.onerror = reject;
reader.readAsArrayBuffer(file);
});
}
3、Blob转ArrayBuffer
export function blobToArrayBuffer(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsArrayBuffer(blob);
});
}