Я хочу загрузить и изменить размер изображения за один раз, не записывая его на диск дважды.
Для загрузки изображения я использую: node-formidable: https://github.com/felixge/node-formidable
Чтобы изменить размер изображения, я использую: gm: http://aheckmann.github.com/gm/
Когда я запускаю этот код, я получаю сообщение об ошибке: «Этот сокет закрыт».
Ошибка: создание ENOENT в errnoException (child_process.js:988:11) в Process.ChildProcess._handle.onexit (child_process.js:779:34)
Мой код:
function uploadPhotos (req, res) {
// parse a file upload
var form = new formidable.IncomingForm();
form.multiples = true; // Allow multiple files with HTML5 multiple attribute.
form.maxFields = 100; // Maximum number of fields (no files).
form.keepExtensions = true; // Include the extensions of the original files.
form.uploadDir = ORIGINAL_IMAGES_DIR;
form.onPart = function (part) {
if (!part.filename) {
// Let formidable handle all non-file parts.
return this.handlePart(part);
}
gm(part)
.resize(200, 200)
.stream(function (err, stdout, stderr) {
stdout.pipe(fs.createWriteStream(path.join(RESIZED_IMAGES_DIR, 'resized_' + part.filename)));
stdout.on('end', function () {
res.send(200);
});
});
};
form.parse(req);
}
Я не могу понять, в чем проблема. Аналогичную проблему можно найти здесь: Потоковая передача файла, загруженного с помощью Express.js, через gm для устранения двойной записи
Какие-либо предложения?
Спасибо!