загрузить файл busboy в gm на ftp

Я хочу изменить размер загруженного изображения на nodejs и отправить его по ftp. Использование nodejs, busboy, GraphicsMagick и jsftp.

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. Я нашел эти два вопроса, но не смог заставить их работать для меня: Вопрос 1 Вопрос 2

Я предполагаю, что что-то не так с моим файлом, который я дал gm, потому что «данные» никогда не записываются на консоль. Сам файл в порядке, так как мне удалось загрузить файл без размера на ftp-сервер.

Я ценю каждую помощь!

Спасибо


person PowPi    schedule 23.11.2015    source источник
comment
Вы пытались добавить событие stdout.error, чтобы увидеть возможные ошибки от imageMagick?   -  person Rax Wunter    schedule 23.11.2015
comment
Да, это немного помогло: Unzul„ssiger Parameter --resize --› неверный параметр --resize. но не уверен, как это решить. Просто делаю: imageMagick(file).stream(function(err, stdout, stderr) { возвращает: Unzul`ssiger Parameter - - @RaxWunter   -  person PowPi    schedule 23.11.2015
comment
Итак, проблема с imageMagick. Проверьте, возможно, у вас установлены нечетные версии imagemagick и node-imagemagick.   -  person Rax Wunter    schedule 23.11.2015
comment
@RaxWunter! Это решило это. Скачала и установила все заново и все заработало. Большое спасибо!   -  person PowPi    schedule 23.11.2015


Ответы (1)


Во-первых, вы можете проверить свой поток на наличие ошибок:

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

Поэтому, если есть ошибка, связанная с imageMagick, это может быть несоответствие двоичного файла imageMagic и библиотеки node-imagemagick.

person Rax Wunter    schedule 23.11.2015