Ant Design Upload上传后怎么拿到文件的base64编码?
我用 Ant Design 的 Upload 组件上传图片,想在上传前把文件转成 base64 用于预览,但不知道怎么在 onChange 里获取到 base64。试过用 FileReader,但总是拿不到结果,控制台还报错。
现在代码大概是这样:
const handleChange = (info) => {
const file = info.file.originFileObj;
const reader = new FileReader();
reader.readAsDataURL(file);
console.log(reader.result); // 这里是 null
};
是不是因为 readAsDataURL 是异步的?那该怎么正确拿到 base64 呢?
readAsDataURL确实是异步的。FileReader 读取文件需要时间,你直接在下一行打印reader.result,这时候文件还没读完呢,当然是 null。前端这块处理文件读取,得用回调函数来拿结果。正确写法是在
onload回调里获取:如果你嫌回调写法麻烦,可以封个 Promise 版本,配合 async/await 更舒服:
顺便提醒一下,
originFileObj只有在文件刚选中的时候有值,上传成功后可能就没了,所以要在合适的时机去取。另外大文件转 base64 会很大,小心别把内存撑爆。