当前位置: 首页 > 面试题库 >

反应js处理文件上传

谷梁存
2023-03-14
问题内容

我是新来的反应js。我想用react js异步上传图像假设我有这段代码

var FormBox = React.createClass({
  getInitialState: function () {
    return {
      photo: []
    }
  },
  pressButton: function () {
    var data = new FormData();
    data.append("photo", this.state.photo);
    // is this the correct way to get file data?
  },
  getPhoto: function (e) {
    this.setState({
      photo: e.target.files[0]
    })
  },
  render: function () {
    return (
      <form action='.' enctype="multipart/form-data">
        <input type='file'  onChange={this.getPhoto}/>
        <button onClick={this.pressButton}> Get it </button>
      </form>
    )
  }
})

ReactDOM.render(<FormBox />, document.getElementById('root'))

任何答案将不胜感激!


问题答案:

你可以利用 FileReader

var FormBox = React.createClass({

          getInitialState: function () {

            return {

              file: '',

              imagePreviewUrl: ''

            }

          },

          pressButton: function () {

            e.preventDefault();

          // TODO: do something with -> this.state.file

          console.log('handle uploading-', this.state.file);

          },

          getPhoto: function (e) {

            e.preventDefault();



            let reader = new FileReader();

            let file = e.target.files[0];



            reader.onloadend = () => {

              this.setState({

                file: file,

                imagePreviewUrl: reader.result

              });

            }



            reader.readAsDataURL(file);



          },

          render: function () {

            let {imagePreviewUrl} = this.state;

            let imagePreview = null;

            if (imagePreviewUrl) {

              imagePreview = (<img src={imagePreviewUrl} />);

            } else {

              imagePreview = (<div className="previewText">Please select an Image for Preview</div>);

            }

            return (

              <div>

              <form action='.' enctype="multipart/form-data">

                <input type='file'  onChange={this.getPhoto}/>

                <button onClick={this.pressButton}> Get it </button>

              </form>

              <div className="imgPreview">

                {imagePreview}

              </div>

              </div>

            )

          }

        })



        ReactDOM.render(<FormBox />, document.getElementById('root'))


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>

<div id="root"></div>


 类似资料:
  • 我正在进行一个新的反应项目,其中有很多文件处理IO正在进行。如果我以命令式阻塞的方式编写IO代码,然后将它们包装成一个单声道,在boundedElastic调度器上发布它们,这是否足够?boundedElastic池大小会限制并发操作的数量吗? 如果这不是正确的方法,你能展示一个如何使用Reactor将字节写入文件的例子吗?

  • 我正在使用Azure DevOps管道构建和部署React JS应用程序。它包含配置。js文件,其中包含一些需要针对不同环境修改的变量。任何人都可以帮我处理这个配置。部署到不同阶段时,js是否在发布管道中?

  • 你想处理一个由用户上传的文件,比如你正在建设一个类似Instagram的网站,你需要存储用户拍摄的照片。这种需求该如何实现呢? 要使表单能够上传文件,首先第一步就是要添加form的enctype属性,enctype属性有如下三种情况: application/x-www-form-urlencoded 表示在发送前编码所有字符(默认) multipart/form-data 不对字符

  • 问题内容: 我最近刚开始玩go,所以我还是菜鸟,对不起,如果我犯了太多错误。我已经尝试解决了很长时间,但我只是不明白发生了什么。在我的main.go文件中,我有一个主要功能: 处理程序函数如下所示: 我知道这不是服务网站的最佳方法提交功能如下所示: 问题是,当执行Submit 函数时,它是并且是一个空字符串,如果r.FormFile返回以下错误,它将继续执行直到第一个: 我不明白为什么r.Meth

  • 本文向大家介绍PHP 处理文件上传错误,包括了PHP 处理文件上传错误的使用技巧和注意事项,需要的朋友参考一下 示例 该$_FILES["FILE_NAME"]['error'](其中"FILE_NAME"是文件输入,存在于你的表单的名称属性的值)可能包含以下值之一: UPLOAD_ERR_OK -没有错误,文件上传成功。 UPLOAD_ERR_INI_SIZE-上载的档案超过中的upload_m

  • 用Flask处理非常大的文件上传(1 GB+)的最佳方式是什么? 我的应用程序基本上接受多个文件,为它们分配一个唯一的文件号,然后根据用户选择的位置将其保存在服务器上。 我们如何运行文件上传作为一个后台任务,这样用户就不会有浏览器旋转1小时,而是可以立即进入下一页? null