📜  ExpressJS-表单数据(1)

📅  最后修改于: 2023-12-03 15:14:57.713000             🧑  作者: Mango

ExpressJS-表单数据

随着Web应用的发展,表单已经成为了Web开发中不可或缺的一部分。在ExpressJS中,我们可以很容易地处理表单数据,并将其传递到后端处理逻辑中。

表单数据的类型

在Web应用中,有两种类型的表单数据需要处理:

  1. URL编码表单数据 (application/x-www-form-urlencoded)
  2. 多部分表单数据 (multipart/form-data)
URL编码表单数据

URL编码表单数据是Web开发中最常见的表单数据类型。当表单提交到服务器时,浏览器会将数据序列化为键值对的形式,然后将这些数据编码为URL编码格式。然后,服务器将这些数据解析为JavaScript对象。

以下是一个URL编码表单的示例:

<form action="/submit" method="post">
  <input type="text" name="username" value="john">
  <input type="text" name="password" value="password">
  <button type="submit">Submit</button>
</form>

当提交表单时,ExpressJS会将表单数据解析为JavaScript对象:

app.post('/submit', function (req, res) {
  console.log(req.body.username); // john
  console.log(req.body.password); // password
});

为了让ExpressJS能够解析URL编码表单数据,需要使用中间件body-parser

多部分表单数据

多部分表单数据通常用于上传文件。这种数据类型比URL编码表单数据复杂得多,因为它涉及到文件的上传和处理。

以下是一个多部分表单的示例:

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="avatar">
  <button type="submit">Upload</button>
</form>

当提交表单时,ExpressJS会将表单数据解析为JavaScript对象和文件对象:

app.post('/upload', function (req, res) {
  console.log(req.files.avatar); // 文件对象
});

为了让ExpressJS能够解析多部分表单数据,需要使用中间件multer

中间件

中间件是一个非常强大的ExpressJS功能,可以在请求到达路由之前或之后对请求进行处理。在处理表单数据时,中间件是必需的。

body-parser

body-parser中间件用于解析URL编码表单数据。为了使用它,需要安装body-parser并将其添加到应用程序中:

var bodyParser = require('body-parser');
	
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

body-parser中间件将表单数据解析为JavaScript对象,并将其添加到req对象的body属性中。

multer

multer中间件用于解析多部分表单数据。它非常灵活,允许您定义各种上传规则。为了使用它,需要安装multen并将其添加到应用程序中:

var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
	
app.post('/upload', upload.single('avatar'), function (req, res) {
  console.log(req.file); // 文件对象
});

multer中间件解析文件对象,并将其添加到req对象的file属性中。

结论

在ExpressJS中处理表单数据非常简单。使用body-parser中间件处理URL编码表单数据,使用multer中间件处理多部分表单数据。您可以使用这些中间件来处理任何类型的表单数据,并将其包装为JavaScript对象或文件对象。