上传后立即在 Nodejs 中重命名图像
Renaming an image in Nodejs as soon as uploaded
我想以特定的命名方案以串行方式将上传的图像存储在我的 nodejs 应用程序中。
假设当我上传第一张图片时,应该将其重命名为 1.png 并存储。对于后续的,它们存储为 2.png、3.png、...,无论上传时的名称是什么。
我可以轻松做到这一点。但是,在图片上传完成之前,正在执行用于重命名的异步代码。
需要一些建议和帮助。
app.post('/projects/:uid/:qid', function (req, res) {
try{
var _uid = req.param("uid");
var _q = req.param("qid");
var _path = __dirname + '/public/projects/' + _uid + '/'+_q;
//console.log("projects/images uid - %s path - %s",_uid,_path);
mkdirp(_path, function (err) {
if (err){
console.error(err);
res.json({status:"NOT OK - Failed"});
}
else {
var form = new formidable.IncomingForm();
form.uploadDir = _path;
form.keepExtensions = true;
form.type = 'multipart';
form.multiples = true;
var img_number = 0;
form.on('fileBegin', function(name, file) {
//console.log("file uploading begin -", name,file);
file.path = form.uploadDir +'/'+ file.name;
//console.log(file.path);
img_number++;
});
form.on('error', function(err) {
console.log("file Upload Error - ", err);
res.json({status:"ERROR"});
});
form.on('end', function() {
res.json({status:"OK" , number_of_images: img_number});
});
form.parse(req, function(err, fields, files) {
});
}
});
}
catch(e){console.log("IMAGE UPLOAD FAILURE- ",e);}
});
找到答案。
在 form.parse()
重命名它就可以了。
form.parse(req, function(err, fields, files) {
var img_name = randomInt(0,100000).toString();
fs.rename(files.upload.path, _path +'/'+ img_name + '.png', function (error) {
if (error) {
fs.unlink(_path +'/'+img_name+'.png');
fs.rename(files.upload.path, _path +'/'+img_name+'.png');
}
});
});
我想以特定的命名方案以串行方式将上传的图像存储在我的 nodejs 应用程序中。
假设当我上传第一张图片时,应该将其重命名为 1.png 并存储。对于后续的,它们存储为 2.png、3.png、...,无论上传时的名称是什么。
我可以轻松做到这一点。但是,在图片上传完成之前,正在执行用于重命名的异步代码。
需要一些建议和帮助。
app.post('/projects/:uid/:qid', function (req, res) {
try{
var _uid = req.param("uid");
var _q = req.param("qid");
var _path = __dirname + '/public/projects/' + _uid + '/'+_q;
//console.log("projects/images uid - %s path - %s",_uid,_path);
mkdirp(_path, function (err) {
if (err){
console.error(err);
res.json({status:"NOT OK - Failed"});
}
else {
var form = new formidable.IncomingForm();
form.uploadDir = _path;
form.keepExtensions = true;
form.type = 'multipart';
form.multiples = true;
var img_number = 0;
form.on('fileBegin', function(name, file) {
//console.log("file uploading begin -", name,file);
file.path = form.uploadDir +'/'+ file.name;
//console.log(file.path);
img_number++;
});
form.on('error', function(err) {
console.log("file Upload Error - ", err);
res.json({status:"ERROR"});
});
form.on('end', function() {
res.json({status:"OK" , number_of_images: img_number});
});
form.parse(req, function(err, fields, files) {
});
}
});
}
catch(e){console.log("IMAGE UPLOAD FAILURE- ",e);}
});
找到答案。
在 form.parse()
重命名它就可以了。
form.parse(req, function(err, fields, files) {
var img_name = randomInt(0,100000).toString();
fs.rename(files.upload.path, _path +'/'+ img_name + '.png', function (error) {
if (error) {
fs.unlink(_path +'/'+img_name+'.png');
fs.rename(files.upload.path, _path +'/'+img_name+'.png');
}
});
});