Node.js 对服务器的获取/发布请求:接收多部分/表单数据时为空数组;
我正在尝试将一个图像(ReactJs)上传到我的服务器(NodeJs+Express+multerJs)到digitalocean Im使用具有多部分/表单数据的POST请求 我从multerJs收到一条成功消息,但我可以在服务器上的日志中看到文件:[]有一个空数组。当然,数字海洋并没有添加任何文件 当我在不处理表单提交的情况下对表单执行相同的Post请求时,一切都正常,文件数组也不是空的。上面的代码正常工作:Node.js 对服务器的获取/发布请求:接收多部分/表单数据时为空数组;,node.js,reactjs,post,digital-ocean,multer-s3,Node.js,Reactjs,Post,Digital Ocean,Multer S3,我正在尝试将一个图像(ReactJs)上传到我的服务器(NodeJs+Express+multerJs)到digitalocean Im使用具有多部分/表单数据的POST请求 我从multerJs收到一条成功消息,但我可以在服务器上的日志中看到文件:[]有一个空数组。当然,数字海洋并没有添加任何文件 当我在不处理表单提交的情况下对表单执行相同的Post请求时,一切都正常,文件数组也不是空的。上面的代码正常工作: <form method="post" enctype="multipart/
<form method="post" enctype="multipart/form-data" action="http://localhost:3004/upload_image_test_4" > </form>
如果有人能帮我的话!(我已经疯狂地用谷歌搜索过了,,,)
谢谢 来自输入的文件不是数组,而是文件数组,请尝试[…e.target.Files][0]在setState的React和async行为中与事件池相关
onChange = (e) => {
const uploadFile = e.target.files[0] ;
this.setState({ file: uploadFile });
};
修改onChange处理程序:
方法1:
将文件放入变量并将其设置为setState
onChange = (e) => {
const uploadFile = e.target.files[0] ;
this.setState({ file: uploadFile });
};
具有event.persist()的方法2:
//编辑我找到了自己问题的解决方案。。。在github页面上,专门讨论与Next.js相关的错误:
由于某些原因,文件未发送到请求。
我以这种方式使用axios,它现在可以工作了:
反应js:
sendFile = (e) => {
const data = new FormData();
const file = e.target.files[0];
data.append('avatar', file);
axios
.post('http://localhost:3004/upload_test_stack_2', data)
.then(console.log)
.catch(console.error);
}
服务器端(nodeJs):
我得到了同样的结果,不幸的是,,,你能创建一个有效的邮递员示例吗?是的,邮递员有效,,,,你能提供邮递员的脚本吗:错误,邮递员也不起作用,这里可以找到一个类似的存储库:它可以用于上传,但不能用于axios或邮递员上的post请求,您能否通过浏览器复制成功的帖子详细信息,格式为:chrome dev network..谢谢!经过几天的研究,这个提示节省了我的时间。
onChange = (e) => {
e.persist();
this.setState({ file: e.target.files[0] });
};
sendFile = (e) => {
const data = new FormData();
const file = e.target.files[0];
data.append('avatar', file);
axios
.post('http://localhost:3004/upload_test_stack_2', data)
.then(console.log)
.catch(console.error);
}
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'My Bucket',
acl: 'public-read',
key: function(request, file, cb) {
cb(null, file.originalname);
}
})
});
router.post('/upload_test_stack_2', upload.single('avatar'), (req, res)
=> {
console.log(req.file, 'The file appears here');
return res.sendStatus(200);
});