0

我正在使用 Bluemix 通过 NodeJS 开发一个“HTTP POST 侦听器”。该服务器应该是 Android 应用程序和 Watson Bluemix 服务之间的链接

这是我的代码

/*eslint-env node*/
// This application uses express as its web server
// for more info, see: http://expressjs.com
var express = require('express');

// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');

// create a new express server
var app = express();

// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));

// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();

/* 'BODY PARSER - NOT WORKING' */
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));

app.use(bodyParser.json());     //Assuming JSON  ENCODED INPUT
app.use(express.bodyParser({uploadDir:'/images'}));

// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {

// print a message when the server starts listening
console.log("server starting on " + appEnv.url);

app.post('/handle',function(request,response){
    var image64=request.body.encoded_String;
    var imageName=request.body.image_name;

    /*OK LOG THIS (Encoded Base64 image)*/
    console.log("IMG RECEIVED: " + imageName); //OK
    console.log("ENCODED: " + image64);        // = undefined (chunk problems?)

    response.writeHead(200, { "Content-Type": "text/plain" });
    response.write('Hello World - Example...\n');
    response.end(); 

    });

});

如何接收 base64 编码图像并将其保存到文件夹中?

谢谢你的帮助!

4

1 回答 1

1

在 base64 中接收到的带有图像的字符串通常是在开头写入的格式,必须删除(或者至少我曾经删除它)。

var base64Data = str.replace(/^data:image\/png;base64,/, ""); // str - string with image

然后你必须用 fs 保存它:

fs.writeFile("../dir/to/save/image.png", base64Data, 'base64', function(err) {});

基本上就是这样。

于 2016-03-03T13:43:42.497 回答