要将 JavaScript 文件或 Blob 对象编码为 Base64,以及将 Base64 编码解码回 JavaScript 文件或 Blob 对象,可以使用以下方法
function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result.split(',')[1]);
reader.onerror = error => reject(error);
});
}
// 使用方法
const inputElement = document.getElementById('fileInput');
inputElement.addEventListener('change', async (event) => {
const file = event.target.files[0];
const base64 = await fileToBase64(file);
console.log('Base64 编码:', base64);
});
function base64ToFile(base64, mimeType) {
const byteCharacters = atob(base64);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += 512) {
const slice = byteCharacters.slice(offset, offset + 512);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
return new Blob(byteArrays, { type: mimeType });
}
// 使用方法
const base64 = 'yourBase64String';
const mimeType = 'application/javascript'; // 或者是其他适合文件类型的 MIME 类型
const file = base64ToFile(base64, mimeType);
console.log('File from Base64:', file);
注意:...
是 ES6 展开运算符,需要浏览器支持。如果需要兼容旧版浏览器,可以使用 Babel 等工具进行转换。
领取专属 10元无门槛券
手把手带您无忧上云