【问题标题】:ReactJS image uploading is not workingReactJS图像上传不起作用
【发布时间】:2018-02-26 10:23:41
【问题描述】:

我正在尝试使用Codepen 中给出的代码示例上传图片

我的状态变量中有文件内容,并通过下面提到的提交函数在控制台中获取它

_handleSubmit(e) {
   e.preventDefault();
   console.log(this.state.file)
   payLoad = {
                image: this.state.file,
            }
   axios({
              method: 'post',
              url: this.state.url+'/task',
              data: payLoad,
              headers: {
                    'content-type': 'multipart/form-data'
                }
            })
 }

this.state.file 我的控制台结果是

File(128544)
lastModified:1508143324556
lastModifiedDate:Mon Oct 16 2017 14:12:04 GMT+0530 (India Standard Time) {}
name:"sample.png"
size:128544
type:"image/png"
webkitRelativePath:""
__proto__:File

但网络在 API 请求标头中将图像变量显示为 {},并且图像未上传。任何人都可以帮忙吗?由于我是 ReactJS 的新手,所以我在某些功能上确实遇到了麻烦,因此不得不在这里提出很多问题。

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您需要使用FormData,因为您发送的文件内容类型为content_type="multipart/form-data"

    试试这个:

    _handleSubmit(e) {
        e.preventDefault();
        console.log(this.state.file)
    
        let data = new FormData();
        data.append('image', this.state.file);
    
        axios({
            method: 'post',
            url: this.state.url+'/task',
            data,
            headers: {
                'content-type': 'multipart/form-data'
            }
        })
    }
    

    要检查 FormData 值,您可以使用 FormData.get(key) 或迭代 FormData.values() 方法。

    检查这个sn-p:

    let data = new FormData();
    data.append('a', 1);
    data.append('b', 2);
    data.append('c', 3);
    data.append('d', 4);
    
    // using formdata.get(key) method
    console.log('a = ', data.get('a'));
    
    // iterating over values
    for(let el of data.values()){
       console.log('el = ', el);
    }

    【讨论】:

    • 所以如果我需要添加更多变量,我应该像这样将所有值附加为data.append('id', this.state.id);吗?
    • 是的,您可以附加任意数量的值,发送文件需要formdata,否则您可以发送普通对象:)
    • 但是在我的后端 PHP 代码中 $_FILES 给出了空数组
    • 不确定 php,查看这个答案可能会解决您的问题:stackoverflow.com/questions/17834243/…
    • 是的,这是我正在遵循的方法,我应该得到它。但不幸的是没有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2019-05-27
    • 2015-02-08
    • 2020-07-12
    相关资源
    最近更新 更多