【问题标题】:How can I make .push work in FileReader.onload()?如何使 .push 在 FileReader.onload() 中工作?
【发布时间】:2020-04-28 13:25:07
【问题描述】:

我有以下代码,我尝试使用 FileReader 读取文件并将其内容放入数组中。只有在推送完所有数据后,我才想继续。这是我目前拥有的:

    const confirm = () => {

        var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
        };
        reader.readAsDataURL(formValues.images[0].file);
        console.log('images base 64');
        console.log(images); // this prints the empty array. 

    };

我只想在使用文件内容更新图像后继续。我该怎么做?

-- 编辑--

我实际上想将多个文件添加到数组中,所以我尝试了以下方法。

    var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
            console.log('images base 64');
            console.log(images);
        };
        for (let i = 0; i < formValues.images.length; i++) {
            reader.readAsDataURL(formValues.images[i].file);
        }

但这会给出错误“InvalidStateError:对象处于无效状态。”

【问题讨论】:

  • reader.onloadend =(e) =>{ var result = reader.result; console.log(i+'/'+result) this.file64.push(result) };

标签: javascript asynchronous filereader


【解决方案1】:

您正在尝试加载之前的结果。在 onload 函数中移动 console.log(images)。

const confirm = () => {
        var reader = new FileReader();
        let images = [];
        reader.onload = function(e) {
            images.push(e.target.result);
             console.log(images);
        };
        reader.readAsDataURL(formValues.images[0].file);
        console.log('images base 64');          
    };

【讨论】:

  • 这只是我给出单个图像的示例,即 formValues.images[0].file。实际上,formValues.images 包含多个文件。如何将所有文件推送到 images 数组中?
  • 循环遍历它并设置一些标志以检查最后一个。
  • 尝试这样,ti 对我​​有用 reader.onloadend =(e) =>{ var result = reader.result; this.file64.push(result) };
【解决方案2】:

它对我有用,试试这样,乖乖

this.file64=[];
    reader.onloadend =(e) =>{
                

                  var result = reader.result; 
                      console.log(result)
                      this.file64.push(result)
                };

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 2020-08-21
    • 2014-11-19
    • 2019-07-13
    • 1970-01-01
    • 2013-12-14
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多