当我想通过http.post从我的角度客户端传递一些数据到我的节点服务器时,我遇到了一个问题。
这是事情,使用JSON.stringify(我的文本)传递文本工作正常,但鉴于我想传递文件+我的文本,我想使用formData。
当我尝试恢复服务器端的数据时,我的req.body是空的,我无法检索数据。
这是我的客户端代码:
[...]
var formData = new FormData();
formData.append('name', product.name);
formData.append('benefits_detail', product.benefits_detail);
formData.append('sections', product.sections);
formData.append('image', product.image); // image is my file
return this.http.post('http://localhost:3000/product', formData, {headers: headers}).map(........)
然后我的服务器,我试图恢复我的数据:
router.post('/', function (req, res, next) {
console.log('req.body');
console.log(req.body);
console.log(req.body.formData);
...
这里的console.log是空的,如:{}
有人可以帮忙吗?
谢谢你
此致
答案 0 :(得分:0)
看起来你没有使用任何正文解析中间件,这是必需的。
来自Express documentation for req.body
包含请求正文中提交的键值对数据。默认情况下,它是未定义的,并在使用正文解析器和multer等身体解析中间件时填充。
尝试使用body-parser
答案 1 :(得分:0)
要将图像上传到服务器,您可以尝试使用Ng File Upload指令。它有一个指令,用于在HTML中选择文件,然后将文件上载到服务器。如果您已经选择了图像,我相信您可以使用JS中的上传部分来发送图像(从未尝试使用HTML中没有文件选择器的上传,但它应该可以工作)。
但是,此解决方案要求您发送两个请求,一个用于数据,另一个用于图像。