使用.map()使用FileReader读取多个文件

Reading multiple files with FileReader using .map()

本文关键字:使用 文件 读取 FileReader map      更新时间:2023-09-26

我有文件数组,我需要将文件格式为json(对象在这一点上)与一堆其他信息。这是我尝试过的

const uploadData = Files.map((file) => {
    const fr = new FileReader();
    fr.readAsArrayBuffer(file);
    fr.onload = (event) =>{
    const fileData = event.target.result;
    return {
      query:{
         documentName: file.name,
         personId: personId,
         serviceId: serviceID,
         documentFile: fileData,
      }
     }
    }
  })

我想使用不可变技术。我确实有一个猜测,为什么这不起作用,但不知道如何解决它。我认为。map不等待文件阅读器读取,因此只返回未定义值的数组。

const uploadData = [],
 Files.forEach((file) => {
    const fr = new FileReader();
    fr.readAsArrayBuffer(file);
    fr.onload = (event) =>{
    const fileData = event.target.result;
      uploadData.push(query:{
         documentName: file.name,
         personId: personId,
         serviceId: serviceID,
         documentFile: fileData,
      })
    }
  })

由于返回发生在回调中,您应该使用本地var并推送数据