2016-03-03 3 views
0

Я использую Bluemix для разработки «HTTP POST-прослушивателя» с помощью NodeJS. Этот сервер должен быть связующим звеном между Android приложением и службой Watson BluemixNodeJS HTTP POST получает изображение с выражением

Это мой код

/*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 закодирован изображение и сохранить его в папку?

Спасибо вам за помощь!

+0

Вы не указали, кому следует получить изображение. Не кто его посылает. – greenapps

+0

'console.log (" IMG RECEIVED: "+ imageName); // OK' Таким образом, этот код получает изображение. И этот код для ....? – greenapps

+0

Я должен получить POST изображение 'app.post ('/ handle', function (request, response) { var image64 = request.body.encoded_String; var imageName = request.body.image_name;' , но в image64 Я могу читать только неопределенные в консольном журнале – Gian0508

ответ

1

Строка с изображением, полученным в base64, обычно имеет формат, записанный в начале, который необходимо удалить (или, по крайней мере, я использовал для его удаления).

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

Тогда вы должны сохранить его с фс:

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

И это практически все.

+0

Благодарим за помощь. У меня есть еще одна проблема, прежде чем я смогу сохранить это изображение : как сохранить строку, закодированную в base64? Когда я получаю POST, я могу только читать «var imageName = request.body.image_name;» и в 'image64 = request.body.encoded_String;' я могу найти только неопределенные. .. – Gian0508

+0

@ Gian0508 Это внешняя проблема. Вы должны прочитать документы в зависимости от того, какую инфраструктуру вы используете для отправки HTTP-запроса на сервер. – Nonemoticoner