Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Javascript 使用node.js接收POST请求_Javascript_Node.js_Http_Ip Camera - Fatal编程技术网

Javascript 使用node.js接收POST请求

Javascript 使用node.js接收POST请求,javascript,node.js,http,ip-camera,Javascript,Node.js,Http,Ip Camera,我有一个Axis M1011摄像头,它被设置为发送一系列jpeg图像,只要它检测到运动,就使用HTTP POST发送到一个服务。我正在使用node.js构建服务 我成功地接收到带有标题的POST请求,但在请求正文中保存数据时遇到问题。代码如下: function addEvent(req, res) { var buffer = ''; console.log(req.headers); req.on("data", function(chunk) {

我有一个Axis M1011摄像头,它被设置为发送一系列jpeg图像,只要它检测到运动,就使用HTTP POST发送到一个服务。我正在使用node.js构建服务

我成功地接收到带有标题的POST请求,但在请求正文中保存数据时遇到问题。代码如下:

function addEvent(req, res)
{
    var buffer = '';
    console.log(req.headers);
    req.on("data", function(chunk)
    {
        console.log("chunk received");
        buffer += chunk;
    });
    req.on("end", function()
    {
        console.log("saving file");
        fs.writeFile("./tmp/"+ new Date().getTime()+".jpg", buffer, function(error)
        {
            if(error)
            {
                console.log(error);
            }
            else
            {
                console.log("saved");
                res.send("OK"); 
                res.end();
            }
        });

    });

}
在控制台上,我得到这种输出。当然,内容长度因文件而异:

{ host: '192.168.0.100:8888',
  'content-type': 'image/jpeg',
  'content-disposition': 'attachment; filename="file13-07-19_20-49-44-91"',
  'content-length': '18978' }
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
chunk received
saving file
saved

问题是,我在tmp文件夹中得到了一个相同的、已损坏的文件,大小约为33KB,无论图像有多大。接收这些文件有什么不对?

您需要处理POST请求以获取已发送的文件。当您在POST请求中提交文件时,您包装文件元数据以及数据并将其发送到服务器


服务器必须解码请求并获取文件。简单地保存请求是不行的。您没有提到您是否正在使用任何web服务器框架。你最好用一个这样的工具来帮你。Express将解析请求,获取文件对象并将文件保存到临时文件中

是的,我在用快车。我也尝试过使用expressbody解析器,但没有成功,因为在那里,服务器在打开后停止响应。可能是我用错了。使用express应该怎么做?实际上我必须自己更正,req.body是空的,尽管使用了bodyParser。你知道如何解决这个问题吗?老实说,不知道。我在之后使用了node.js,我想我确实做到了,但在这种情况下,我不知道出了什么问题。也许现有的答案是有道理的,但我没有找到答案。