繁体   English   中英

busboy“文件”到gm到ftp上传

[英]busboy “file” to gm to ftp upload

我想在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服务器,因此自行将其存档是可以的。

感谢您的帮助!

谢谢

首先,您可以检查您的流中是否有错误:

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

因此,如果存在与imageMagick相关的错误,则可能是imageMagic二进制和node-imagemagick库不匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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