0
我有一個AS3應用程序向我發送一個來自http post的jpeg編碼的字節數組。我的節點應用程序將採取這一點,並保存在本地文件系統作爲JPG格式。NodeJS從字節數組寫入JPG
AS3的JPEG編碼器是從as3 core lib
代碼:
var results = new Object();
results.success = false;
results.message = debugWrite("Post Recieved \r\n");
processPost(request, response, function() {
results.message += debugWrite("path: " + FILEPATH + "\r\n");
//save jpg
var buffer = new Buffer(request.post, 'binary');
fs.writeFile(FILEPATH, buffer, "binary", function(error){
if(error != null){
results.message +=debugWrite("Error: "+ error + "\r\n");
}else{
results.message += debugWrite("OK - Saved");
results.success = true;
}
});
response.writeHead(200, "OK", {'Content-Type': 'application/json'});
response.write(JSON.stringify(results));
response.end();
});
}
var processPost = function(request, response, callback) {
var queryData = "";
if(typeof callback !== 'function') return null;
if(request.method == 'POST') {
request.on('data', function(data) {
queryData += data;
if(queryData.length > 1e6) {
debugWrite("Request To Large");
queryData = "";
response.writeHead(413, {'Content-Type': 'text/plain'}).end();
request.connection.destroy();
}
});
request.on('end', function() {
request.post = queryData;
callback();
});
} else {
response.writeHead(405, {'Content-Type': 'text/plain'});
response.end();
}
}
目前,它是保存文件,但該文件不是視圖能。 任何提示都非常感謝。
php使用「file_put_contents」完成了任務,但我需要將功能移至節點服務器。
'新緩衝液(數據,編碼)'是棄用。改爲使用'Buffer.from(data,encoding)'。嘗試添加'console.log(request.post)'。如果緩衝區數據沒問題,那麼開始時的咬合必須等於來自任何jpeg文件的咬合,例如, 'FF D8 FF E0 00 10 46 4A 49 46 00 01 01 01 00 60'(它是永久的jpeg文件頭)。 –
@AikonMogwai fd fd fd fd 00 10 4a 46 49 46 00 01 01 00 00 01是我得到的起始字節。另外,尾部字節不正確。還有什麼地方可以接收字節不同於我以前使用的php腳本? –
你可以發佈圖像作爲文件接收的圖像?我發現這個頭可以通過一些jpg版本來改變:( –