【发布时间】:2021-03-07 21:39:12
【问题描述】:
这是我尝试过的代码。
// To get base64 code of file
const toBase64 = file => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onloaded = () => resolve(reader.result.replace(/^data:.+;base64,/, ''));
reader.onerror = error => reject(error);
})
// To make an array of files
const getAttachments = async files => {
let documents;
try {
documents = files.map(async file => {
let base64 = await toBase64(file)
return {
doc: base64,
documentName: file.name,
documentType: file.type
}
})
} catch {
console.error('Failed to get files as base64')
}
return Promise.resolve(documents)
}
我只是尝试通过使用上述 2 个函数来获取一个对象数组。 像下面这样;
getAttachments(Array.from(event.target.files)).then(documents => {
console.info(documents)
}
但结果是
我很想知道如何才能得到我想要的东西。 谢谢。
【问题讨论】:
-
documents = await Promise.all(files.map(async file =>等 -
感谢您的评论,但控制台中没有退出任何内容。
-
你可能做错了......下面的答案怎么样?有效果吗?
-
它也没有注销任何东西。
-
嗨@Bravo,感谢您抽出宝贵时间。我可以看到问题所在。我已经在
toBase64()方法中将reader.onloaded更改为reader.onload,它现在可以工作了。
标签: javascript arrays reactjs asynchronous promise