Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用react和node同时上传文件(图像)和数据_Node.js_Reactjs_File Upload - Fatal编程技术网

Node.js 使用react和node同时上传文件(图像)和数据

Node.js 使用react和node同时上传文件(图像)和数据,node.js,reactjs,file-upload,Node.js,Reactjs,File Upload,我目前上传的图像和数据使用两个调用服务器,我想减少到一个调用服务器 我当前的前端代码如下。输入字段为: <input required type="file" onChange={this.fileUploaded} /> 使用以下代码发送到后端: userEvent.image = new FormData() userEvent.image.append('file', e.target.files[0]) t

我目前上传的图像和数据使用两个调用服务器,我想减少到一个调用服务器

我当前的前端代码如下。输入字段为:

<input
    required
    type="file"
    onChange={this.fileUploaded}
/>
使用以下代码发送到后端:

    userEvent.image = new FormData()
    userEvent.image.append('file', e.target.files[0])
    this.setState({ userEvent })
let data = this.state.userEvent.image
let eventData = this.state.userEvent
eventData.token = localStorage.getItem("token")
axios.post(`${process.env.REACT_APP_API}/image`, data)
    .then(res => {
        axios.patch(`${process.env.REACT_APP_API}/events/${res.data._id}`, eventData)
        .then(res => {console.log(res)})
        .catch(err =>{console.log(err)})
        })

        .catch(err => {
        console.log("imgerr", err)
    })
我的后端代码(第一次调用服务器时)是:

当我尝试在一个对象中发送图像和数据时,我在后端收到一个错误,因为我这样做时req.file是未定义的

我错过了什么?

我发现了

我附加了我保存在状态中的其他数据,我也想将这些数据发送到后端

对象数组需要字符串化

let userEvent = this.state.userEvent
console.log('userEvent.ticekts',    userEvent.tickets);
let data = userEvent.image
data.append('title', userEvent.title)
data.append('venue', userEvent.venue)
data.append('description', userEvent.description)
data.append('startDetails', userEvent.startDetails)
data.append('endDetails', userEvent.endDetails)
data.append('token', localStorage.getItem("token"))
data.append('currency', userEvent.currency)
data.append('lat', userEvent.lat)
data.append('lng', userEvent.lng)
data.append('address1', userEvent.address1)
data.append('address2', userEvent.address2)
data.append('address3', userEvent.address3)
data.append('address4', userEvent.address4)
data.append('eventPassword', userEvent.eventPassword)
data.append('globalRefundPolicy', userEvent.globalRefundPolicy)
data.append('globalRefundOptions', JSON.stringify(userEvent.globalRefundOptions))
data.append('region', userEvent.region)
data.append('tickets', userEvent.tickets)
data.append('ticketTypesEquivalent', userEvent.ticketTypesEquivalent)

userEvent.tickets.forEach(item => {
    data.append(`tickets[]`, JSON.stringify(item));
  });


axios.post(`${process.env.REACT_APP_API}/image`, data)
    .then(res => {
        console.log('res', res)
        
        })

        .catch(err => {
        console.log("imgerr", err)
    })

你在用快车吗?如果是,您是否正在使用
正文解析器
let userEvent = this.state.userEvent
console.log('userEvent.ticekts',    userEvent.tickets);
let data = userEvent.image
data.append('title', userEvent.title)
data.append('venue', userEvent.venue)
data.append('description', userEvent.description)
data.append('startDetails', userEvent.startDetails)
data.append('endDetails', userEvent.endDetails)
data.append('token', localStorage.getItem("token"))
data.append('currency', userEvent.currency)
data.append('lat', userEvent.lat)
data.append('lng', userEvent.lng)
data.append('address1', userEvent.address1)
data.append('address2', userEvent.address2)
data.append('address3', userEvent.address3)
data.append('address4', userEvent.address4)
data.append('eventPassword', userEvent.eventPassword)
data.append('globalRefundPolicy', userEvent.globalRefundPolicy)
data.append('globalRefundOptions', JSON.stringify(userEvent.globalRefundOptions))
data.append('region', userEvent.region)
data.append('tickets', userEvent.tickets)
data.append('ticketTypesEquivalent', userEvent.ticketTypesEquivalent)

userEvent.tickets.forEach(item => {
    data.append(`tickets[]`, JSON.stringify(item));
  });


axios.post(`${process.env.REACT_APP_API}/image`, data)
    .then(res => {
        console.log('res', res)
        
        })

        .catch(err => {
        console.log("imgerr", err)
    })