Я хочу изменить размер загруженного изображения на 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-сервер.
Я ценю каждую помощь!
Спасибо