Lorsqu'un utilisateur télécharge une image - j'utilise d'ailleurs un multer - avec un nom qui contient un espace, je veux remplacer les espaces blancs par "-"
avant d'enregistrer le nom de fichier ma table Mysql et ensuite renommer le fichier qui a été téléchargé sur le nouveau nom avec le "-"
. Ceci est mon code. Il renomme et la table Mysql enregistre le nouveau nom avec le trait d'union mais l'image n'est pas téléchargée pour une raison quelconque, il n'y a pas d'erreur même, en fait la requête POST est effectivement réussie.Renommer l'image transférée dans multer en utilisant fs
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;
}
});
}
Pourquoi êtes-vous désireux d'utiliser le nom d'origine? Je serais préoccupé par les chemins malveillants .... – mscdex
@mscdex Que suggérez-vous que je fasse? renommer chaque image téléchargée en une chaîne arbitraire? –
Eh bien, actuellement, le stockage sur disque par défaut enregistre sur le disque en utilisant un nom de fichier aléatoire/unique composé de 16 chiffres hexadécimaux. Le nom de fichier (pas le chemin absolu) est disponible sur la propriété 'req.file.filename'. Donc, vous pouvez juste déplacer cela à l'endroit que vous voulez/besoin. Par exemple: 'fs.rename (req.file.path, path.join ('/ mon/upload/stockage', req.file.filename), ...)' – mscdex