busboy "file" 到 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。
我发现了这两个问题,但无法使它对我有用:
Question 1
Question 2
我想我给 gm 的文件肯定有问题,因为 "data" 从未写入控制台。
自己归档很好,因为我设法将未调整大小的文件上传到 ftp 服务器。
感谢您的帮助!
感谢
首先您可以检查您的流是否有错误:
stdout.on('error', function(err) {
console.log(err);
});
因此,如果存在与 imageMagick 相关的错误,则可能是 imageMagic 二进制文件与 node-imagemagick 库不匹配
我想在 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。 我发现了这两个问题,但无法使它对我有用: Question 1 Question 2
我想我给 gm 的文件肯定有问题,因为 "data" 从未写入控制台。 自己归档很好,因为我设法将未调整大小的文件上传到 ftp 服务器。
感谢您的帮助!
感谢
首先您可以检查您的流是否有错误:
stdout.on('error', function(err) {
console.log(err);
});
因此,如果存在与 imageMagick 相关的错误,则可能是 imageMagic 二进制文件与 node-imagemagick 库不匹配