当用户上传图片时 - 我顺便使用了multer - 使用包含空格的名称,我想在将文件名保存到my之前用"-"
替换空格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;
}
});
}
答案 0 :(得分:1)
为什么不在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 })
答案 1 :(得分:0)
您可以像下面的方式那样在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()
上传图像的日期和文件的最后类型或extension
前images-1602486722326.jpeg
OR
如果需要,您可以保留图像的原始名称
filename: function (req, file, callback) {
callback(null, file.originalname);
}
这将获取文件的原始名称并将其提供给您要上传的文件