Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

412
Visualizações
req.file siempre indefinido usando multer en mi aplicación Node express

Traté de cargar un archivo de imagen desde el lado del cliente a mi servidor de almacenamiento AWS S3 usando multer con el soporte de multer-s3. Sin embargo, sigo obteniendo un resultado indefinido para mi llamada req.file. He estado buscando en Google y he comprobado todas las posibles causas de mi problema y hasta ahora no he tenido suerte. Espero que alguien pueda ayudarme aquí. Gracias por adelantado.

Código HTML del lado del cliente:

 <form method="post" enctype="multipart/form-data" action="/create"> <input type="text" name="name" /> <input type="text" name="topic" /> <input type="file" name="image" /> <input type="submit" value="Upload" /> </form>

Código del lado del servidor:

 var express = require('express'); var http = require('http'); var app = express(); var methodOverride = require('method-override'); var bodyParser = require('body-parser'); var multer = require('multer'); var multerS3 = require('multer-s3'); var AWS = require('aws-sdk'); app.use(methodOverride()); app.use(bodyParser.urlencoded({ extended: true })); //Create S3 client var s3 = new AWS.S3(); //this code is copy directly from multer-s3 since I don't care about my file name shown on S3 for now var upload = multer({ storage: multerS3({ s3: s3, bucket: mybuckname, metadata: function (req, file, cb) { cb(null, {fieldName: file.fieldname}); }, key: function (req, file, cb) { cb(null, Date.now().toString()) } }) }); app.post('/create', upload.single('image'), function(req, res) { var nameField = req.body.name, topicField = req.body.topic; console.log("File: ", req.file); console.log("Name: ", nameField); console.log("Topic: ", topicField); res.sendStatus(200); res.end(); });

He probado lo siguiente:

  1. Se eliminó 'body-parser' y se usó solo 'multer', luego se obtuvo un resultado aún peor (tanto req.body como req.file no están definidos). Con body-parser, al menos puedo garantizar que req.body está funcionando
  2. Para simplificar la causa, eliminé todas mis entradas de campo de texto del lado del cliente y dejé solo la opción de carga de archivos para asegurarme de que solo estoy transmitiendo datos de archivos, aún devuelvo indefinido para req.file (multer no funciona en absoluto)
  3. También leí sobre la posibilidad de que "Tenga en cuenta que es posible que req.body aún no se haya completado por completo. Depende del orden en que el cliente transmite los campos y archivos al servidor". En mi caso, no recibo el archivo, así que ahora no me importa.
  4. Use multer solo sin multer-s3, y probé upload.array en lugar de upload.single, todavía sin suerte (multer-s3 está construido sobre multer, así que no creo que tenga nada que ver con mi problema actual, pero solo para intentarlo)
  5. Omita AWS S3 y guárdelo en la ruta local, resultado aún no definido
about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

después de una larga lucha cambiando entre multer y ayudante de camarero y nada funciona. De repente, me di cuenta de que mi formulario en realidad está usando un elemento de polímero 'es = "forma de hierro"' que mi error no escribió en mi publicación original como se muestra a continuación. Después de eliminarlo, la carga de mi archivo funciona en multer; estoy seguro de que también funcionará en busboy.

 <form is="iron-form" method="post" enctype="multipart/form-data" action="/create">

Los elementos poliméricos siempre me crean problemas en el pasado. Pero no me malinterpretes, es un gran proyecto con muchas cosas geniales disponibles para diseñar tu página. Pero debe comprender realmente cómo usar esos elementos para aprovecharlos. En mi caso, aprendo de mi lección y espero poder compartirla contigo.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda