Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 在angular+;nodejs_Node.js_Angular_Http Post - Fatal编程技术网

Node.js 在angular+;nodejs

Node.js 在angular+;nodejs,node.js,angular,http-post,Node.js,Angular,Http Post,当我想通过http.post将一些数据从angular客户端传递到node.js服务器时,我遇到了一个问题 问题是,使用JSON.stringify(我的文本)传递文本效果很好,但是考虑到我希望传递一个文件+我的文本,我希望使用formData 当我试图在服务器端取回数据时,我的req.body是空的,我无法检索数据 这是我的客户端代码: [...] var formData = new FormData(); formData.append('name', product.na

当我想通过http.post将一些数据从angular客户端传递到node.js服务器时,我遇到了一个问题

问题是,使用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为空,如图所示:{}

有人能帮忙吗


谢谢您

看起来您没有使用任何正文解析中间件,这是必需的

包含请求正文中提交的数据的键值对。默认情况下,它是未定义的,并且在使用主体解析中间件(如主体解析器和multer)时填充


尝试使用

将图像上载到服务器,您可以尝试使用该指令。它有一个指令来选择HTML格式的文件,然后将文件上传到服务器。如果您已经选择了图像,我相信您可以使用JS中的上载部分发送图像(如果没有HTML中的文件选择器,您从未尝试过使用上载,但它应该可以工作)

但是,此解决方案需要发送两个请求,一个请求数据,另一个请求图像