Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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
如何将此PHP转换为express.js/node_Php_Javascript_Node.js_Post_Express - Fatal编程技术网

如何将此PHP转换为express.js/node

如何将此PHP转换为express.js/node,php,javascript,node.js,post,express,Php,Javascript,Node.js,Post,Express,我正在尝试创建一个端点,该端点接收post数据并将其保存到png文件中。此PHP代码实现以下功能: if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) { // Get the data $imageData=$GLOBALS['HTTP_RAW_POST_DATA']; // Remove the headers (data:,) part. // A real application should use them ac

我正在尝试创建一个端点,该端点接收post数据并将其保存到png文件中。此PHP代码实现以下功能:

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // Get the data
    $imageData=$GLOBALS['HTTP_RAW_POST_DATA'];

    // Remove the headers (data:,) part.  
    // A real application should use them according to needs such as to check image type
    $filteredData=substr($imageData, strpos($imageData, ",")+1);

    // Need to decode before saving since the data we received is already base64 encoded
    $unencodedData=base64_decode($filteredData);

    // Save file.  This example uses a hard coded filename for testing, 
    // but a real application can specify filename in POST variable
    $fp = fopen( 'test.png', 'wb' );
    fwrite( $fp, $unencodedData);
    fclose( $fp );
}
我是新来表达的,我有以下几点:

app.use (function(req, res, next) {
    var data='';
    req.setEncoding('utf8');
    req.on('data', function(chunk) { 
       data += chunk;
    });

    req.on('end', function() {
        req.body = data;
        next();
    });
});

app.post('/upload', function(req, res){

    var testData = req.body;

    return res.send(testData);

});
我得到一个空白的物体。即使实际数据正在发布。有人能告诉我用express编写上述代码的好方法吗


谢谢

所以从处理程序中取出它:

var fs = require('fs');

app.post('/upload', function(req, res){

    var image = req.body;
    var noHeader = image.substring(image.indexOf(',') + 1);
    var decoded = new Buffer(noHeader, 'base64');

    fs.writeFile('testfile.png', decoded, function(err){

        res.send('done!');

    });

});

除了正文后的额外“.”之外,该代码将正常工作。很抱歉,这是一个输入错误…但我仍然不知道如何完成php所做的其余工作(查找子字符串,保存到文件)谢谢!当req.body返回一个对象时,我必须显式地将图像转换为字符串。它会写入testfile.png,但该文件不会在osx上打开“它可能已损坏或使用预览无法识别的格式”:(你知道我应该发送什么内容类型的数据以确保文件格式正确吗?如果你要将其发送回客户端,你只需要一个内容类型。如果是这样,我认为它是image/png。2015年实现上述目标的方法是什么?