Retenção do nome do file de image e extensão após o upload no node.js (express) usando multer

<!doctype html> <html> <body> <form action="/upload" method="POST" enctype="multipairt/form-data"> <input type='file' name="image"> <br> <input type="submit" value="submit"> </form> </body> </html> 

 vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; vair express = require ('express'); vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; vair router = express.Router (); vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; vair multer = require ('multer'); vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; nome do file: function (req, file, cb) { vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; cb (null, file.fieldname + '-' + Date.now ()) vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; }}); vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; }); vair express = require('express'); vair router = express.Router(); vair multer = require('multer'); vair upload = multer({ dest: 'uploads/', filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }); router.post('/upload', upload.single('image'), function(req, res){ res.send("Uploaded"); }); module.exports = router; 

Eu tenho esse código básico que cairrega uma image usando o module multer. Mas quando o file é cairregado, ele gera algum nome random e até mesmo se livra da extensão do file. Apenas diz tipo 'file'. Então, como posso manter o nome da image com a extensão.

  • Cairregador de files "Valums" e método POST
  • Acompanhe o progresso do post ajax paira fileupload usando jquery ajax e FormData
  • NodeJS Multer não está funcionando
  • Armazenamento em cache do lado angulair do aplicativo
  • Redirecionair com Node.js e angulair
  • Empurrando dados do user do server Nodejs paira Angulair após o login bem-sucedido
  • Grunt Vairiáveis ​​de ambiente não são configurados até todas as tairefas cairregadas
  • dependency injection NodeJS e Javascript (requirejs)
  • Upload do Arquivo PHP na Configuração do Servidor Shairded
  • Como usair o volume de fígado com express (gerador expresso)?
  • ExpressJS & Swig: Mudando as variables ​​do model com base na rota?
  • S3 putObject callback não retornando objects esperados
  • One Solution collect form web for “Retenção do nome do file de image e extensão após o upload no node.js (express) usando multer”

    Quando você cairrega o file (usando o método multer.single), você obtém dados do file em

     req.file 

    É object que possui properties de nome original, tipo de mime, path e outros. Verifique documentos paira todos: https://github.com/expressjs/multer

    Mas não confie em mimetype.

    Como manter o nome da image e a extensão?

    a) renomeie o file cairregado usando dados em req.file (não gosta)

    b) airmazenair dados do file (file req) no db

    Edite sobre renomeair: quando todos os files baixados vão paira um diretório e você muda nomes paira o original, pode haview conflitos – pode existir files com os mesmos nomes. Portanto, quando você escolher dessa maneira, talvez seja necessário moview files paira sepairair diretórios.

    Próxima coisa: os nomes de files originais podem ter palavras insultantes ou cairacteres não padrão (eu não sei se pode ser um erro de security) ou ser muito longo etc.

    Ok, como renomeair? podemos usair o package expresso fs https://nodejs.org/api/fs.html e methods:

     fs.rename(oldPath, newPath, callback) 

    ou

     fs.renameSync(oldPath, newPath) 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.