dtah63820 2016-07-27 19:49
浏览 208
已采纳

NodeJS从Byte Array编写JPG

I have an AS3 application sending me a jpeg-encoded byte array from an http post. My node application is to take that, and save it on the local filesystem as a jpg.

the as3 jpeg-encoder is from as3 core lib

Code:

var results = new Object();
    results.success = false;
    results.message = debugWrite("Post Recieved 
");
    processPost(request, response, function() {

        results.message += debugWrite("path: " + FILEPATH + "
");

        //save jpg
        var buffer = new Buffer(request.post, 'binary');
        fs.writeFile(FILEPATH, buffer, "binary", function(error){
            if(error != null){
                results.message +=debugWrite("Error: "+ error + "
");
            }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();
        }
}

Currently it is saving a file, however, the file isn't view-able. Any tips are really appreciated.

php accomplished the task using "file_put_contents", but i needed to move the functionality to a node server.

  • 写回答

1条回答 默认 最新

  • drozwmi5440 2016-07-27 21:01
    关注

    The data from the request on data event was perfect, so i used a writestream. Somehow, collecting all the data messed up the information.

    Code:

    //server handling route
    if(QD === "/postImage"){
        processPost(request, response, filename);
    }
    
    var processPost = function(request, response, name) {
        if(request.method == 'POST') {
            //repsonse object
            var results = new Object();
            results.success = false;
            results.message = debugWrite("Post Recieved 
    ");
            results.message += debugWrite("HREF: " + name + "
    ");
    
            //make write stream
            var ImageFile = fs.createWriteStream(PATH+'/public/assets/'+name);
    
            //on data
            request.on('data', function(data) {
                //write to file
                ImageFile.write(data);
            });
    
            //on end
            request.on('end', function() {
                //finish write
                ImageFile.end();
                response.writeHead(200, "OK", {'Content-Type': 'application/json'});
                response.write(JSON.stringify(results));
                response.end();
            });
    
        } else {
            response.writeHead(405, {'Content-Type': 'text/plain'});
            response.end();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面