当我尝试使用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>
我在哪里出错?我没有写任何其他代码来保存文件的原因是,它甚至没有收到我要上传的文件的名称。
答案 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>
表示字符未编码。当表单具有文件上载控件时,这一点很重要。您要发送二进制文件,这样可以确保比特流不会改变。