Radio Onda Popular
Logo

Multer agregar extensión a archivos con nodejs express

Escrito por
27 de enero de 2023
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.

Más Noticias

HUANCAVELICA: CUATRO MUERTOS Y MÁS DE 2,000 DAMNIFICADOS DEJA ACTUAL TEMPORADA DE LLUVIAS

Región reportó también más de 13,700 pobladores afectados y 35 quedaron destruidas por eventos naturales Lima, 20 de febrero de 2025.- Un total de 129 emergencias se han registrado en…

NASA actualiza probabilidad de impacto del asteroide 2024 YR4 con la Tierra

20 feb. 2025 – 13:43 hrs. ¿Qué pasó? La NASA actualizó la probabilidad de que el asteroide 2024 YR4 impacte con la Tierra en diciembre de 2032, luego de que los astrónomos reanudaran…

Trump publica decreto que incluye designación de cárteles mexicanos como grupos terroristas

Las organizaciones criminales mexicanas son señaladas como grupos terroristas | (Infobae México/Jovani Pérez) La mañana de este jueves 20 de febrero, el gobierno de Donald Trump publicó de manera oficial…

Cómo es la mansión con 12 habitaciones del siglo XVIII que perteneció a Audrey Hepburn y ahora está a la venta

Villa La Paisible, antigua residencia de Audrey Hepburn (Knight Frank) En el corazón de Tolochenaz, un pequeño y pintoresco pueblo suizo a orillas del lago Lemán, se encuentra una propiedad…