#### APP获取 ArrayBuffer以及读取base64:
const H5PlusReadFileArrayBuffer = (filePath) => {
return new Promise((resolve, reject) => {
try {
plus.io.resolveLocalFileSystemURL(
filePath,
function (entry) {
entry?.file(function (file) {
const fileReader = new plus.io.FileReader()
fileReader.readAsDataURL(file, ‘utf-8’)
fileReader.onloadend = function (evt) {
const result = {
base64: evt.target.result.split(‘,’)[1],
size: file.size,
}
resolve(uni.base64ToArrayBuffer(result.base64))
}
})
},
function (error) {
reject(error)
},
)
} catch (error) {
reject(error)
}
})
}
app方面是直接先读取base64,再读取arrayBuffer,所以一气呵成。
#### 综合:
import SparkMD5 from ‘spark-md5’;
export interface FileReaderInfo {
fileHeader64:string;//–base64形式的文件前一段内容,用于传递magicNumber进行判断。
base64:string;
arrayBuffer:any;
tempPath:string;//形式如下:blob:http://localhost:3000/5fd140d3-1372-4394-8b08-0cba8c508099
mime:string;
errMsg?:string;
md5:string,//–获取文件md5.
}
// #ifdef H5
// 通过blob:url读取实际的blob数据
function h5_blobURLToBlob (url:string) :Promise {
return new Promise((resolve, reject) => {
var http = new XMLHttpRequest();
http.open(‘GET’, url, true)
http.responseType = ‘blob’;
http.onload = function (e) {
if (this.status == 200 || this.status === 0) {
resolve(this.response)
} else {
reject(this.status)
}
};
http.send()
})
}