JS各种数据流之间的格式(ArrayBuffer、Uint8Array、Blob、 File、DataURL)相互转换及应用
// 假设我们有一个文件对象file
const file = new File(["Hello, world!"], "hello.txt");
// 转换为ArrayBuffer
fileToArrayBuffer(file).then(arrayBuffer => {
console.log(arrayBuffer);
});
// 转换为Uint8Array
fileToUint8Array(file).then(uint8Array => {
console.log(uint8Array);
});
// 转换为Blob
fileToBlob(file).then(blob => {
console.log(blob);
});
// 转换为File
arrayBufferToFile(file.slice()).then(newFile => {
console.log(newFile);
});
// 转换为DataURL
fileToDataURL(file).then(dataURL => {
console.log(dataURL);
});
// 函数定义
function fileToArrayBuffer(file) {
return new Response(file).arrayBuffer();
}
function fileToUint8Array(file) {
return new Response(file).arrayBuffer().then(buffer => {
return new Uint8Array(buffer);
});
}
function fileToBlob(file) {
return new Response(file).blob();
}
function arrayBufferToFile(arrayBuffer) {
return new Response(arrayBuffer).blob().then(blob => {
return new File([blob], file.name, { type: file.type });
});
}
function fileToDataURL(file) {
return new Response(file).blob().then(blob => {
return URL.createObjectURL(blob);
});
}
这段代码展示了如何在不同的数据流格式之间转换文件对象。注意,实际转换过程中可能需要处理异常和错误,并确保适当的异步流程控制。
评论已关闭