Icono del sitio Radio Onda Popular

Multer agregar extensión a archivos con nodejs express

Cuando usas multer para poder recibir archivos de lado del servidor (backend), se guarda sin extensión, resulta complicado poder usar este archivo sin extensión, entonces ahora les muestro la forma de como agregar la extensión.

Multer es un middleware de Node.js que se utiliza para manejar archivos de carga en aplicaciones web. Ayuda a procesar y almacenar archivos enviados a través de formularios HTML.

Para agregar la extensión Multer a una aplicación, primero debes instalarlo mediante npm:

npm install multer

Ahora les comparto el código completo para que puedan visualizar la forma como se agrega la extensión.

import express from 'express'
import multer from 'multer'
import path from 'path'
const router = express.Router()


var storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, 'upload/')
    },
    filename: function (req, file, cb) {
        const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
        cb(null, file.fieldname + '-' + uniqueSuffix+path.extname(file.originalname))
        
      }
  })

const upload = multer({storage:storage})

router.post('/upload',upload.single("file"),(req,res)=>{
    const title = req.body.file
    const file = req.file;
    console.log(title)
    console.log(file)
    res.json({message:"SuccessFully upload files"})
})

export default router

Aquí una imagen donde se usa antes multer.diskStorage, en este método podemos ver, que tenemos acceso al file por ende podemos realizar búsqueda de la extensión del archivo a cargar, es por eso que usamos path.extname para poder obtenerlo.

La función path.extname() de Node.js es utilizada para obtener la extensión de un archivo a partir de su nombre de ruta. La función toma una ruta de archivo como su único argumento y devuelve la extensión del archivo como una cadena, incluyendo el punto (.) al principio.

Por ejemplo:

Copy codeconst path = require('path');

const filePath = '/path/to/example.txt';
console.log(path.extname(filePath));  // Output: '.txt'

También es posible utilizar esta función para obtener la extensión de un archivo en una ruta dinámica,

Copy codeconst path = require('path');
const ext = path.extname(req.file.originalname);

Es importante tener en cuenta que si la ruta no contiene una extensión, la función devolverá una cadena vacía.

Copy codeconst path = require('path');

const filePath = '/path/to/example';
console.log(path.extname(filePath));  // Output: ''

En resumen, la función path.extname() es una forma rápida y sencilla de obtener la extensión de un archivo a partir de su ruta.

En conclusión multer nos da la facilidad y la libertad de poder manejar la extensión a nuestra necesidad, y con la ayuda de path.extname podemos obtener la extensión y guardarlo en nuestro servidor. Espero poder haberte ayudado con este pequeño tutorial.

Salir de la versión móvil