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

MINEM CULMINA PRIMERA ETAPA DE CONSTRUCCIÓN DE REDES DE DISTRIBUCIÓN DE GAS NATURAL EN AREQUIPA, MOQUEGUA Y TACNA

Lima 21 de Noviembre 2024.- Empresa ganadora del segundo proceso de licitación de la concesión Sur Oeste, ya inició trabajos de construcción de redes externas. El Ministerio de Energía y…

Cómo funciona el RS-26 Rubezh, el misil balístico intercontinental lanzado por Rusia contra Ucrania

Foto de archivo: Un lanzador ruso de misiles balísticos estratégicos RS-24 Yars sale de un hangar durante un simulacro en la región de Ivanovo, Rusia. (Ministerio de Defensa Ruso vía…

Elon Musk y Vivek Ramaswamy explicaron su plan para reformar la estructura gubernamental de Estados Unidos

Vivek Ramaswamy y Elon Musk fueron propuestos por Donald Trump para conducir un área para reducir el estado norteamericano. Elon Musk, director ejecutivo de SpaceX y Tesla, y Vivek Ramaswamy,…

El Bitcoin rompió un récord histórico y superó la barrera de los 98.000 dólares

Bitcoin alcanzó los 97.000 dólares en el mercado asiático, superando su récord anterior (REUTERS/Dado Ruvic/Ilustración) Bitcoin rompió un récord el jueves al superar por primera vez los 98.000 dólares, en…