2015-01-15 176 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