使用express-fileupload上传图像

时间:2019-11-17 13:40:17

标签: node.js express

当我尝试使用express-fileupload上传图像时,它说:

  

TypeError:无法读取未定义的属性'fileName'。

以下是服务器端代码:

 const express = require('express');
    const bodyParser = require('body-parser');
    const sys = require("./etc/system")
    const app = express();
    const fileUpload = require('express-fileupload');

    let PORT = sys.config.PORT;

    app.use(fileUpload({
       createParentPath: true
  }));
  app.use(bodyParser.urlencoded({extended:true}));
  app.use("/js", express.static("public/js"));
  app.use("/css", express.static("public/css"));
  app.use("/img", express.static("public/images"));
  app.use(express.static("public"));

  app.post("/upload", (req, res) => {
      console.log(req.files.fileName);
      res.send("File uploaded successully");
  });

  app.listen(PORT, () => {
      console.log(`Server listening on port: ${PORT}`);
  });

以下是HTML页面:

<html lang="en">
   <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <meta http-equiv="X-UA-Compatible" content="ie=edge">
       <title>Event Listener</title>
       <link rel="stylesheet" href="css/style.css">
       <script src="js/sandbox.js"></script>
   </head>
  <body>
      <h1>File Upload</h1>
      <div>
          <form action="http://localhost:5050/upload" method="POST">
              <p><input type="file" name="fileName" /></p>
              <p><input type="submit" value="Upload" /></p>
          </form>
 </div>
  </body>
  </html>

我在哪里出错?我没有写任何其他代码来保存文件的原因是,它甚至没有收到我要上传的文件的名称。

1 个答案:

答案 0 :(得分:0)

我认为您的错误不是表单标签中的var first = db.collection("cities") .orderBy("population") .limit(25); return first.get().then(function (documentSnapshots) { // Get the last visible document var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1]; console.log("last", lastVisible); // Construct a new query starting at this document, // get the next 25 cities. var next = db.collection("cities") .orderBy("population") .startAfter(lastVisible) .limit(25); });。所以形式应该是这样的:

encType="multipart/form-data"

<form action="http://localhost:5050/upload" method="POST" encType="multipart/form-data"> <p><input type="file" name="fileName" /></p> <p><input type="submit" value="Upload" /></p> </form> 表示字符未编码。当表单具有文件上载控件时,这一点很重要。您要发送二进制文件,这样可以确保比特流不会改变。