[英]Rename uploaded image in multer using fs
当用户上传图片时 - 顺便说一下,我正在使用 multer - 名称包含空格,我想在将文件名保存到 Mysql 表之前用"-"
替换空格,然后重命名已上传到带有"-"
的新名称的文件。 这是我的代码。 它确实重命名并且 Mysql 表用连字符保存了新名称,但由于某种原因图像没有上传,甚至没有错误,事实上 POST 请求实际上是成功的。
router.post('/uploadpost', upload.single('image'), function(req, res){
var name = req.file.originalname;
var reName;
if(/\s/g.test(name)){
reName = name.replace(" ", "-");
fs.rename(req.file.path, reName, function(err){
if(err){
throw err;
}
});
}
当您通过 Multer 保存文件时,为什么不更改名称? 类似的东西:
function generateName(){
return 'newname';
}
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename: function (req, file, cb) {
cb(null, generateName()); // generate new name
}
})
var upload = multer({ storage: storage })
您可以在multer
轻松更改文件名,如下所示
const multer = require('multer');
let fs = require('fs-extra');
let storage = multer.diskStorage({
destination: function (req, file, cb) {
let path = `tmp/upload`;
fs.mkdirsSync(path);
cb(null, path);
},
filename: function (req, file, cb) {
console.log(file);
cb(null, file.fieldname + '-' + Date.now() + "." + extension);
}
})
var upload = multer({ storage: storage });
在上面的代码中,我给出了这样的文件名file.fieldname
fieldname 是您发送图像的字段名称,例如 fieldname 可以是"image"
或任何东西,而不是 - , Date.now()
上传图像的日期和在文件 ex images-1602486722326.jpeg
最后一种类型或extension
中
或者
如果你想像下面这样,你可以保留图像的原始名称
filename: function (req, file, callback) {
callback(null, file.originalname);
}
这将获得文件的原始名称并将其提供给您正在上传UPDATE和 MemoryStorage 的文件
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'bucket_name',
acl: 'public-read',
key: function (request, file, cb) {
console.log(file); |-------------- change name here which you want to use
|
cb(null, file.originalname); use
}
})
}).array('upload', 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.