Estoy creando una aplicación en React and Node que tiene un componente de carga. Logré cargar el archivo en React, lo envié al nodo con multer, pero se guarda como una cadena aleatoria sin ninguna terminación, solo del tipo de archivo. Si cambio manualmente la terminación a pdf para decir que puedo abrirlo y ver el contenido, pero me gustaría hacerlo automáticamente.
Esto es lo que he hecho en nodejs:
var multer = require('multer') const upload = multer({ dest: "./uploads" }); app.post('/upload', upload.single('file'), function (req, res, next) { var f = req.file; console.log(f); var s = req.body.standard; console.log(s); }) En el registro de la consola de archivos me imprime los detalles del archivo. De las cosas que probé fue cambiar req.file.filename = req.file.originalname; req.file.path = "./uploads/"+req.file.originalname;
pensando que podría cambiar el nombre del archivo en la computadora pero no funcionó.
Otra cosa que he intentado es insertar este código:
var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'public') }, filename: function (req, file, cb) { cb(null, Date.now() + '-' +file.originalname ) } }) y modifique const upload con var upload = multer({ storage: storage }).single('file')
fuera del método de publicación y dentro de él, pero no funciona. No hace nada.
¿Puede alguien proporcionarme el código completo sobre cómo debería verse mi página js con el método de publicación y el código que establece el nombre de archivo y la carpeta dentro del proyecto de nodo? Gracias por adelantado. En internet solo encuentro fragmentos de código y no se donde integrarlos.
Gracias
Prueba el siguiente código
const multer = require('multer') const storage = multer.diskStorage({ destination: function(req, file, cb) { cb(null, 'public') }, filename: function(req, file, cb) { cb(null, Date.now() + '-' + file.originalname) } }) const upload = multer({ storage: storage }) app.post('/upload', upload.single('file'), function(req, res, next) { const f = req.file; console.log(f); const s = req.body.standard; console.log(s); })