如何在JavaScript中将文件转换为base64?
2022-08-29 23:55:33
断续器TypeScript 版本也可在答案中找到
现在我通过以下行获取文件对象:
file = document.querySelector('#files > input[type="file"]').files[0]
我需要通过以64为基数的json发送此文件。我应该怎么做才能将其转换为base64字符串?
断续器TypeScript 版本也可在答案中找到
现在我通过以下行获取文件对象:
file = document.querySelector('#files > input[type="file"]').files[0]
我需要通过以64为基数的json发送此文件。我应该怎么做才能将其转换为base64字符串?
使用以下类尝试解决方案:FileReader
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
console.log(reader.result);
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
}
var file = document.querySelector('#files > input[type="file"]').files[0];
getBase64(file); // prints the base64 string
请注意,这是一个类型,它是 的子类。因此,它可以与 一起使用。
请参阅完整的工作示例。.files[0]
File
Blob
FileReader
现代 ES6 方式(异步/等待)
const toBase64 = file => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
async function Main() {
const file = document.querySelector('#myfile').files[0];
console.log(await toBase64(file));
}
Main();
UPD:
如果要捕获错误
async function Main() {
const file = document.querySelector('#myfile').files[0];
try {
const result = await toBase64(file);
return result
} catch(error) {
console.error(error);
return;
}
//...
}