es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Multer es un módulo de Node.js: – req.file no está definido.

Estoy creando una aplicación utilizando Node, Express y ejs y multer para subir imágenes. Cada vez que envío el formulario, req.file es undefined. He pasado todo el día resolviendo problemas, pero no puedo entender qué estoy haciendo mal.

HTML:

<form action="/post" id="formPost" method="post" enctype="multipart/form-data">
     <input class="img-file" type="file" name="image" required="">
     <input class="submit" type="submit" value="Post">
</form>

app.js:

const path = require('path');
const express = require('express');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const multer = require('multer');
const app = express();

app.use(express.static(path.join(__dirname, 'public')))
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname,'resources/views'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "./image");
  },
  filename: function (req, file, cb) {
    console.log(req.file);
    cb(null, Date.now() + "-" + file.fieldname + ".png");
  },
});
const upload = multer({ storage: storage });
app.post("/post", upload.single("image"), (req, res) => {
      console.log(req.file);
});
app.get("/post", (req, res) => {
  res.render("post");
});
app.listen(3000, () => {
  console.log("Example app listening at http://localhost:3000/login");
});
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema que causa que req.file sea indefinido probablemente se debe a una incorrecta configuración del campo de entrada del formulario. Asegúrese de que el atributo “name” del campo de entrada coincida con el argumento pasado a upload.single() en la ruta app.post().

    En este caso, el nombre del campo de entrada del formulario es “imagen”, que se pasa correctamente como argumento a upload.single(). Sin embargo, también es posible que haya otros problemas que causen el problema.

    Para solucionar el problema, intente imprimir en la consola el valor de req.file en cada paso de su recorrido, desde el envío del formulario en el lado del cliente hasta verificar su valor en la ruta app.post(). Además, asegúrese de que la carpeta de destino para las imágenes cargadas exista y tenga los permisos correctos.

Comments are closed.