Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

164
Vistas
Nodejs: por qué necesitamos pasar un objeto FormData para que multer pueda funcionar bien (subir el archivo usando ajax jquery)

Estoy aprendiendo nodejs y usando multer, ajax jquery para el archivo cargado, pero me siento un poco confundido. Supongamos que tengo este código en el archivo html

 <form action="/" method='post' enctype="multipart/form-data" id='form-data'> <input type="file" name='file' id='file' class='file'> </form>

y el guión:

 <script> $(document).on('change', '#file', function () { var property = document.getElementById('file').files[0]; var form_data = new FormData(); form_data.append('file', property); $.post({ url: '/', type: 'post', data: form_data, contentType: false, cache: false, processData: false, success: function (data) { console.log(data); } }) }) </script>

En server.js (lado del servidor) tengo este código:

 var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads') }, filename: function (req, file, cb) { cb(null, Date.now() + path.extname(file.originalname)) } }) var upload = multer({ storage: storage }) app.post('/', upload.single('file'), (req,res) =>{ console.log(req.body); console.log(req.file); })

Este código se ejecuta sin problemas. Pero estas preguntas que me molestan:

En el script, línea 9, si uso "data: property" en lugar de "data: form_data", ya no funciona, req.file está vacío. ¿Por qué no podemos pasar directamente la variable "propiedad" a los datos pero debemos usar un objeto FormData para hacerlo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Multer está diseñado para analizar datos codificados usando el formato multipart/form-data (que consta de cualquier cantidad de bits de datos (como archivos y fragmentos de texto) separados por marcadores de límite).

La API de FormData le permite recopilar diferentes piezas de datos, incluidos archivos, y generar datos de varias partes multipart/form-data con ellos.

Si pasa jQuery el valor de la property directamente, estará enviando el archivo, que puede ser text/plain o image/png o casi cualquier cosa, sin ninguna codificación adicional. Es muy poco probable que sean multipart/form-data formatos, ya que las personas generalmente no almacenan datos en ese formato.

Puede escribir código del lado del servidor que espera un archivo sin procesar, pero si lo hiciera, no estaría usando Multer.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda