简体   繁体   中英

busboy “file” to gm to ftp upload

I want to re size a uploaded image on nodejs and send it on via ftp. Using nodejs, busboy, GraphicsMagick, and 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);
};

The output is now:

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

On ftp server side I get a 0 bytes file and also never doing a cb. I found this two questions but couln't make it work for me: Question 1 Question 2

I guess there must be something wrong with my file I gave to gm because "data" is never written to the console. File it self is fine since I managed to upload a unresized file to the ftp server.

I appreciate every help!

Thx

Firstly you can check your stream for errors:

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

So if there is an error related to imageMagick it can be a mismatching of imageMagic binary and node-imagemagick library

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM