【问题标题】:multipe image preview before uploading in reactjs?在React js中上传之前的多个图像预览?
【发布时间】:2019-11-13 11:59:31
【问题描述】:
import React, { Component } from "react";

class uploader extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }

  onImageChange = event => {
    if (event.target.files && event.target.files[0]) {
      let reader = new FileReader();
      reader.onload = e => {
        this.setState({ images: e.target.result });
      };
      reader.readAsDataURL(event.target.files[0]);
    }
  };
  render() {
    return (
        <div class="preview">
          <img id="target" src={this.state.image} />
        </div>
        <div>
          <input id="imageupload" type="file" onChange={this.onImageChange} />
        </div>
    );
  }
}

export default uploader;

我正在尝试显示用户选择的图像预览,一旦用户选择第二张图像,前一张图像就会被新图像替换,但我想在预览部分显示这两个图像。我们怎么能这样做?提前感谢

【问题讨论】:

  • 不是单个state 字符串,而是使用字符串数组并附加到它。
  • 这将帮助您预览多个图像stackoverflow.com/a/55526993/7412827
  • 我尝试附加但它不起作用@chris G
  • 那个答案不起作用我检查了@tahir iqbal
  • 你检查过那个答案中的小提琴链接吗,@AkhilEN

标签: javascript reactjs filereader


【解决方案1】:

当前和以前的图像预览

一旦您选择第二张图片,两者都会显示(当前和上一张)。

import React from "react";
const dummy = "https://static.thenounproject.com/png/625182-200.png";
class MultipleImageUpload extends React.Component {
  state = { current: null, old: [] };
  uploadImage = e => {
    const { current, old } = this.state;

    this.setState(
      {
        current: URL.createObjectURL(e.target.files[0])
      },
      () => {
        this.setState({ old: [...old, current] });
      }
    );

    this.setState({ current: URL.createObjectURL(e.target.files[0]) });
  };
  render() {
    console.log(this.state);
    const { old, current } = this.state;
    return (
      <div className="App">
        <div>
          <h3>Current</h3>
          <img
            src={current ? current : dummy}
            alt="custom-pic"
            style={{ height: 100, width: 100 }}
          />
        </div>
        <hr />
        {old
          ? old.map((o, i) => (
              <img
                src={o ? o : dummy}
                key={i.toString()}
                alt="preview"
                style={{ height: 100, width: 100 }}
              />
            ))
          : ""}

        <input type="file" onChange={this.uploadImage} />
      </div>
    );
  }
}
export default MultipleImageUpload;

【讨论】:

  • sry 它不仅适用于两个图像,它们还可以是任意数量的图像@vahid Akhtar
  • @AkhilEN 你只提到了两张图片......然后等待
猜你喜欢
  • 2019-09-04
  • 2014-01-20
  • 2016-10-29
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
相关资源
最近更新 更多