2015-11-23 90 views
0

我想在nodejs上重新上傳大小並通過ftp發送它。 使用nodejs,busboy,GraphicsMagick和jsftp。busboy「文件」gm到ftp上傳

var uploadFile = function(dir, req, cb) { 
req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { 

    var imageMagick = gm.subClass({ 
    imageMagick: true 
    }); 

    console.log('Resizing file...'); 
    console.log(filename); 

    imageMagick(file) 
    .resize(150, 150) 
    .stream(function(err, stdout, stderr) { 
     if (err) 
     console.log(err); 

     var i = []; 

     stdout.on('data', function(data) { 
     console.log('data'); 
     i.push(data); 
     }); 

     stdout.on('close', function() { 
     console.log('close'); 

     var image = Buffer.concat(i); 

     console.log(image.length); 
     console.log(image); 

     ftp.put(image, filepath, function(hadError) { 
      if (!hadError) { 
      filename = config.one.filepath + dir + "/" + filename; 
      cb(null, filename); 
      } else { 
      console.log(hadError); 
      cb(hadError, 'Error'); 
      } 
     }); 
     }); 
    }); 
}); 
req.pipe(req.busboy); 
}; 

輸出現在是:

Resizing file... 
100-0001_IMG.JPG 
close 
0 
<Buffer > 

在FTP服務器端,我得到一個0字節的文件,也從來沒有做CB。 我發現這兩個問題,但couln't讓它爲我工作: Question 1 Question 2

我想一定是壞了我的文件,我給了通用汽車,因爲「數據」不會被寫入控制檯。 由於我設法上傳一個不受限制的文件到ftp服務器,所以自己文件很好。

我感謝您的幫助!

THX

+1

您是否嘗試添加stdout.error事件以查看imageMagick可能出現的錯誤? –

+0

是的,這有點幫助:「Unzul」ssiger參數 - 「resize」 - >「無效的參數 - - 大小」。但不知道如何解決它。如果你有一個奇怪的版本,你可以使用imageMagick(file).stream(function(err,stdout,stderr){「giveback:」Unzul「ssiger參數 - 」@RaxWunter – PowPi

+1

所以問題是imageMagick。安裝imagemagick和node-imagemagick –

回答

1

首先你可以查看信息流中的錯誤:

stdout.on('error', function(err) { 
    console.log(err); 
}); 

所以,如果有涉及到ImageMagick的錯誤也可以是imageMagic二進制和節點ImageMagick庫的不匹配