[英]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.