javascript - FileReader错误参数1不是类型 'Blob'

标签 javascript node.js reactjs

我的 javascript Filereader 遇到问题,它返回错误 Uncaught TypeError: 无法在“FileReader”上执行“readAsDataURL”:参数 1 不是“Blob”类型。二分之一。有时它有效,但当我重复操作时,它会失败。

HTML 代码:

 <div className="draggable-container">
      <input
      type="file"
      id="file-browser-input"
      name="file-browser-input"
      ref={input => this.fileInput = input}
      onDragOver={(e) => {
      e.preventDefault();
      e.stopPropagation();
      }}
      onDrop={this
      .onFileLoad
      .bind(this)}
      onChange={this
      .onFileLoad
      .bind(this)}/>

JavaScript 代码:

 onFileLoad(e){
const file = e.target.files[0];
let fileReader = new FileReader()
fileReader.onload = () =>{
  console.log('IMAGE LOADED : ', fileReader.result)
  const files = {
    name: file.name,
    size: file.size,
    type: file.type,
    data: fileReader.result,
    isUploading: false
  }

  this.addLoadedFile(files);
}

fileReader.onabort = () =>{
  alert('reading aborted');
}

fileReader.onerror = () =>{
  alert('reading ERROR');
}


-> Error -> fileReader.readAsDataURL(e.target.files[0]);

}

最佳答案

drop 事件包含 DataTransfer object 中的文件。所以,而不是

const file = e.target.files[0]

你需要做:

const file = e.target.files[0] || e.dataTransfer.files[0]

处理这两个事件。

这可能就是为什么有些尝试成功,有些失败的原因 - 您刚刚通过 2 种不同的方式上传了文件,但只有一种有效。

关于javascript - FileReader错误参数1不是类型 'Blob',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451330/

相关文章:

JavaScript:从对象数组中删除重复项

jquery - 单击 highslide 事件中的 anchor

node.js - 随时向客户发送 MongoDB 文档?

mysql - 如何在Sequelize中查询多对多关系数据

javascript - 自定义绑定(bind)后运行默认绑定(bind)

javascript - slider 的样式在 IE 中无法正常工作

node.js - 在模板中显示格式化的时间戳

node.js - 使用Webpack构建ReactJS项目导致graceful-js报告错误 "can' t解析 'fs'”

javascript - 我应该在哪里调用 React Redux Meteor.js 混合物中的订阅

reactjs - 如何使用@testing-library/react 测试 Ant 设计日期选择器?