我想在 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 的文件一定有问题,因为“数据”从未写入控制台。File it self 很好,因为我设法将未调整大小的文件上传到 ftp 服务器。
我感谢每一个帮助!
谢谢