当前位置: 首页 > 知识库问答 >
问题:

Multer nodejs-要求。文件未定义

贝财
2023-03-14

我正在创建一个应用程序,使用Node、Express、ejs和multer上传图像。每次我提交表格时。文件未定义。我花了一整天的时间来排除故障,但却不知道自己做错了什么。

超文本标记语言

<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(, () => {
  console.log(`Example app listening at http://localhost:3000/login`);
});

共有1个答案

黄毅
2023-03-14

您有一些小错误:首先,您忘记添加端口,而不是登录,应该是发布,然后我们立即找到正确的地址,避免出现错误

app.listen(3000, () => {
  console.log(`Example app listening at http://localhost:3000/post`);
});

项目文件夹

app.js我添加了一个简单的错误处理程序:

app.post("/post", upload.single("image"), (req, res, next) => {}
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.post("/post", upload.single("image"), (req, res, next) => {
  const file = req.file;
  if (!file) {
    const error = new Error("Please upload a file");
    error.httpStatusCode = 400;
    return next(error);
  }
  res.send(file);
  console.log("Success", req.file);
});

app.get("/post", (req, res) => {
  res.render("post");
});

app.listen(3000, () => {
  console.log(`Example app listening at http://localhost:3000/post`);
});

邮递ejs公司

<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="Upload File" />
</form>

输出:

选择文件并按上传文件后:

VSCode输出:

作品像一个魅力;-)

 类似资料:
  • 我不知道我做错了什么,因为我对另一个程序使用了同样的方法,它完美地工作了... 提前致谢

  • 我正在通过NestJS API中的仅HTTP cookie传递身份验证令牌。 因此,在为我的Authendpoint编写一些E2E测试时,我遇到了一个问题,即cookie没有达到我的预期。 下面是我的精简测试代码: 在我的JWT策略中,我使用一个定制的cookie解析器。我遇到的问题是请求。当cookie到达解析器时,它总是未定义的。但是,cookie将出现在请求中。标题。 我遵循这篇媒体文章中的

  • 我的电子应用程序有问题。大约9个月前我就让它工作了,但现在我定制的最小化和最大化按钮不能正常工作。 这是我的文件结构 下面是 和 这是我的文件 当我单击最小化或最大化时,什么都不会发生。所以我去http://localhost:8000/html/index.html检查了控制台,我看到了这些错误 未捕获引用错误:索引处未定义require。html:137 未捕获的引用错误:在index.js:

  • 我有一个要求。包含所有依赖项但未正确处理的txt文件: 在满足pip安装要求后。txt,我得到以下信息: 但当我进行pip安装时: 然后运行我的pip安装-r要求。txt。然后它就起作用了。 这是我的要求。txt包含: 有人有解决办法吗?

  • 问题内容: 为什么node.js无法识别document.GetElementById?它说“ ReferenceError:未定义文档”。我能做什么? 问题答案: 与Web浏览器中的DOM(文档对象模型)相关。 但是,Node.js不是浏览器Javascript。它是一台服务器,非常类似于PHP或Perl,因此,您无法访问浏览器的DOM或执行任何特定于基于浏览器的Javascript的操作。 您

  • 问题内容: 我的问题是类似这样的一个,但没有深入了解他的解决方案。 我正在使用Passport通过Instagram进行身份验证。成功通过身份验证后,用户将被定向到“ /”。在这一点上,请求具有用户对象(也可以正常工作)。但是,一旦我重定向,req.user是未定义的。:’( 奇怪的是,每个请求都会调用passport.deserializeUser。它成功获取了用户对象,但是在中间件的某个地方,