【问题标题】:Select multiple files in react with refs选择多个文件与 refs 反应
【发布时间】:2019-04-13 17:25:20
【问题描述】:

我正在尝试使用 react 选择多个文件,但我的尝试失败了 我希望用户能够选择多个文件接下来要上传,但是当我尝试添加第二个文件时,我的代码只能获取一个文件,旧文件被新文件替换

我尝试将multiple 属性添加到我的输入元素和accept="image/*,但它们都不起作用。目前我一直在尝试multiple。这是我当前的代码

...

  handleFile(e){
        let images = this.imgRef.current.files
        console.log(Array.from(images))
}

...

 <input type="file" name="images" id="imgid" className="imgcls" ref={this.imgRef} onChange={this.handleFile} style={{ display: "none" }} multiple/>

我想记录每个文件信息,但这是我得到的

https://imgur.com/S2EwDLs

【问题讨论】:

    标签: reactjs file fileapi


    【解决方案1】:

    您不需要引用来访问文件。您可以从收到的更改事件中简单地做到这一点,如下所示:

    class App extends Component {
      handleFile(e) {
        console.log(e.target.files)
      }
    
      render() {
        return (
          <div className="App">
            <input type="file" name="images" id="imgid" className="imgcls" onChange={this.handleFile} multiple/>
          </div>
        );
      }
    }
    

    【讨论】:

    • 但我想稍后将该文件发送到服务器
    • 您可以将文件保存为状态,如下所示: this.setState({ files: e.target.files });
    • 你确定吗?
    • @ilia1 我相信我遇到了类似的问题。我有一个包含 5 个子组件的组件,每个子组件都呈现一个文件输入。第一个组件按预期工作,但是每当我尝试使用任何其他文件输入上传第二个图像时,React 都会将更改与第一个相关联并替换该图像。我尝试过使用 refs,event.target,状态。似乎没有什么能改变这种行为。
    • 您是否尝试将每个文件存储在单独的状态变量中?
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2021-10-09
    相关资源
    最近更新 更多