2015-01-15 83 views
2

我有一段节点代码来上传图片。图像大小为10〜200K。正如你可以看到你一点都不大。问题在于,看起来节点在上传时长时间(可能是10分钟)保持忙碌,并且它不会响应新请求。该代码是Android应用程序使用的JSON API的一部分。NodeJS卡在上传图片

var fs = require('fs'); 

exports.upload = function(req, res){ 
    .... 
    var rawBody = new Buffer(''); 
    req.on('data', function(chunk){ 
       rawBody = Buffer.concat([rawBody, chunk]); 
    }); 
    req.on('end', function(){ 
       winston.info('on end of uploading moment'); 
       fs.writeFile(filepath, rawBody, 'binary', function(err){ 
        if(err) winston.error(err); 
        else{ 

         db.updatesomething(); 
        } 
       }); 
      }); 

回答

2

请求不会返回任何内容到浏览器,这就是为什么它的悬挂,它等待响应

var fs = require('fs'); 

exports.upload = function(req, res){ 

    var rawBody = new Buffer(''); 
    req.on('data', function(chunk){ 
      rawBody = Buffer.concat([rawBody, chunk]); 
    }); 
    req.on('end', function(){ 
     winston.info('on end of uploading moment'); 
     fs.writeFile(filepath, rawBody, 'binary', function(err){ 
      if(err) { 
       winston.error(err); 
       res.end('error'); 
      } else { 
       db.updatesomething(); 
       res.end('success'); // send a response back 
      } 
     }); 
    }); 
}); 
+0

晕了! 2天前应该问你。非常感谢! – lonelyloner 2015-01-15 15:34:38

+0

不客气,永远记得回复一个回复。 – adeneo 2015-01-15 15:36:20