反应使用window.FileReader上传多个文件

时间:2019-05-17 02:47:14

标签: reactjs react-redux filereader

我目前已经实现了将单个文件上传到我的React应用, 但要上传多个文件,下面是我用于上传单个文件的代码。可以上传多个文件吗?

 captureFile = (event) => {
    const file = event.target.files[0]
    const reader = new window.FileReader()
    reader.readAsArrayBuffer(file)
    reader.onloadend = () => {
      this.setState({
        buffer: Buffer(reader.result),
        file: URL.createObjectURL(file),
      })
    }
  }

这是我目前正在尝试的操作

  captureFile = (event) => {
    const files = event.target.files
    for (let i = 0; i < files.length; i++) {
      const file = files[i]
      const reader = new window.FileReader()
      reader.readAsArrayBuffer(file)

    reader.onloadend = () => {
      this.setState({
        buffer: Buffer(reader.result),
        file: URL.createObjectURL(file),
      })
    }
  }

1 个答案:

答案 0 :(得分:0)

您可以使用FileReader或UrlObject读取图像或文件,如下所示:

    const[selectedFiles,setSelectedFiles] = useState([]);

    captureFile = (event) => {
    let files = [];
    for (let file of event.target.files) {
      files.push(URL.createObjectURL(file));
      }
    setSelectedFiles(files);
   }

然后,您可以通过类似以下的地图功能来遍历selectedFiles:

   selectedFiles.map((item,key) => (<img key={key} src={item} />));

它适用于我而不是FileReader,因为它使用了回调函数。