【发布时间】:2020-07-14 10:10:53
【问题描述】:
我正在创建一个博客,所以想为每篇文章上传一张图片。为此,我使用了快速文件上传。使用 nodejs 我已经完成以下操作,将客户端发送的图像保存在 MongoDB 中。当我在控制台中打印req.files 的值时,我得到undefined。
exports.addPost = (req, res) => {
const file = req.files.file
const post = new Blog()
post.title = req.body.title
post.des = req.body.des
post.file = file
post.save((err, doc) => {
if (!err) {
res.send(doc)
} else {
console.log(err)
}
})
}
在反应中,我有 Addpost.js 设置状态并按如下方式处理表单提交:
const Addpost=()=> {
const [title, settitle] = useState('')
const [des, setdes] = useState('')
const [file, setfile] = useState('');
const {addPost}=useContext(Globalcontext)
const handleSubmit = (e)=>{
e.preventDefault()
const formData = new FormData()
formData.append('file',file)
const addedValue={
title,
des,
formData
}
addPost(addedValue)
settitle('')
setdes('')
setfile('')
}
const onChange=(e)=>{
const file=e.target.files[0]
setfile(file)
}
return (
<div>
<form onSubmit={handleSubmit} encType="multipart/form-data">
<input type="text" name="title" value={title} onChange={(e)=>settitle(e.target.value)}/>
<input type="text" name="des"value={des} onChange={(e)=>setdes(e.target.value)}/>
<input type="file" name="file" onChange={onChange}/>
<button type='submit' value='submit'>Add Post</button>
</form>
</div>
)
}
AXIOS 发布请求发送为:
function addPost(postdetail) {
axios.post('http://localhost:4000/blog', postdetail).then(res => {
dispatch({
type: 'ADD_DATA',
payload: res.data
})
}).catch(error => {
console.log(error)
})
}
我收到错误:
Cannot read property 'file' of undefined
【问题讨论】:
-
这能回答你的问题吗? How do you use express-fileupload correctly
-
在 React 方面,我推荐一个像 react-uploady 这样的库。它使发送额外的标题/参数变得非常容易
标签: node.js reactjs mongodb express mern