我有以下功能设置,它捕获上传的图像,转换它们并将它们写入服务器。如何重命名转换后的文件?
目前,此功能会获取上传的图片并保存一个版本的图片。
目标:
我不太确定如何去做第一个和第二个,我认为busboy正在干扰它,因为下面函数中的filename
包括扩展。我需要能够在扩展名之前附加大小的文件名。这可以用正则表达式完成吗?
功能:
// upload new user image
app.post('/api/users/user/upload_image', function (req, res) {
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
console.log('\n\nUploading file: '.underline +filename .underline);
console.log('Uploaded\nConverting...');
var size = { width: 200, height: 200 };
gm(file,'www/uploads/' + filename)
.resize(size.width * 2, (size.height * 2) + '')
.thumbnail(size.width, size.height + '^')
.gravity('Center')
.extent(size.width, size.height)
.file(filename)
.profile('*')
.write('www/uploads/' + filename, function (err) {
console.log("Success!".bold);
});
});
req.busboy.on('finish', function () {
res.writeHead(303, { Connection: 'close', Location: '/' });
res.end();
});
});
答案 0 :(得分:1)
就创建多个文件而言,您可以只复制已经使用的gm链,只需使用不同的文件名。
对于文件名问题,您可以创建自己的文件名,也可以使用正则表达式将维度插入原始文件名。后者你可以使用类似的东西:
// changes "foo.jpg" to "foo-400x400.jpg"
filename.replace(/\.[^\.]+$/, '-400x400$&')