export function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
let resData = e.target.result;
resolve({ data: resData });
};
});
}
export function fileToBlob(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
const type = file.type;
let resData = new Blob([e.target.result], { type });
resolve({ data: resData });
};
});
}
export function base64ToFile(base64, fileName) {
return new Promise((resolve, reject) => {
let arr = base64.split(',');
let mime = arr[0].match(/:(.*?);/)[1] || type;
let bytes = window.atob(arr[1]);
let n = new ArrayBuffer(bytes.length);
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bytes.charCodeAt(n);
}
let resData = new File([u8arr], fileName, { type: mime });
resolve({ data: resData });
});
}
export function base64ToBlob(base64) {
return new Promise((resolve, reject) => {
let arr = base64.split(',');
let mime = arr[0].match(/:(.*?);/)[1] || type;
let bytes = window.atob(arr[1]);
let n = new ArrayBuffer(bytes.length);
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bytes.charCodeAt(n);
}
let resData = new Blob([u8arr], { type: mime });
resolve({ data: resData });
});
}
export function blobToFile(blob, fileName) {
return new Promise((resolve, reject) => {
let resData = new File([blob], fileName, { type: blob.type });
resolve({ data: resData });
});
}
export function blobToBase64(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = (e) => {
let resData = e.target.result;
resolve({ data: resData });
};
});
}
export function base64ToArrayBuffer(base64String) {
return new Promise((resolve, reject) => {
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');
const rawData = window.atob(base64);
const resData = new Uint8Array(rawData.length);
for (let i = 0; i < rawData.length; ++i) {
resData[i] = rawData.charCodeAt(i);
}
resolve({ data: resData });
});
}
export function arrayBufferToBase64(buffer) {
return new Promise((resolve, reject) => {
let binary = '';
let bytes = new Uint8Array(buffer);
let len = bytes.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
let resData = window.btoa(binary);
resolve({ data: resData });
});
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通