【发布时间】:2016-02-02 19:24:30
【问题描述】:
当用户上传图片时-顺便说一下,我正在使用 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;
}
});
}
【问题讨论】:
-
为什么要使用原始名称?我会担心恶意路径....
-
@mscdex 你建议我做什么?将每个上传的图像重命名为任意字符串?
-
嗯,目前默认情况下,磁盘存储使用由 16 个十六进制数字组成的随机/唯一文件名保存到磁盘。文件名(不是绝对路径)在
req.file.filename属性中可用。因此,您可以将其移动到您想要/需要的任何位置。例如:fs.rename(req.file.path, path.join('/my/upload/storage', req.file.filename), ...)
标签: regex node.js express fs multer