[英]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.