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)
})