使用express框架创建服务器,实行表单数据的提交和文件上传

在使用express框架创建服务器前期准备工作:

使用npm install express --save命令安装express模块

使用express框架创建服务器,实行表单数据的提交和文件上传

以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:

  • body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

  • cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

  • multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。

创建server.js,代码如下:

// 模块引入开始

var express = require('express');

var app = express();

var bodyParser = require('body-parser');

var fs = require("fs");

var multer = require('multer');

/* 

 *cookie-parse是一个解析cookie的工具,通过req.cookie可以取到传过来的cookie

 *cookie-parse,只是个req对象添加了cookies属性,设置cookie和express中相同

 */

var cookieParser = require('cookie-parser');

var util = require('util');

// 模块引入结束

//创建application/x-www-form-urlencoded编码解析

var urlencodedParser = bodyParser.urlencoded({ extended: false });

// 设置静态文件路径

app.use('/public', express.static('public'));

app.use(bodyParser.urlencoded({ extended: false }));

app.use(multer({ dest: '/tmp/' }).array('image'));

app.use(cookieParser());

// 主页输出

app.get('/index.html', (req, res) => {

    res.cookie('username', 'Jack'); //express设置cookie

    res.sendFile(__dirname + "/" + "index.html");

});

//表单数据提交

app.post('/process_get', urlencodedParser, (req, res) => {

    // 输出 JSON 格式

    var response = {

        "first_name": req.body.first_name,

        "last_name": req.body.last_name

    };

    console.log(response);

    // 文件上传开始

    var des_file = __dirname + "/public/file/" + req.files[0].originalname; // 文件上传地址

    fs.readFile(req.files[0].path, (err, data) => { //读取上传文件

            fs.writeFile(des_file, data, (err) => { //写入文件,即上传文件

                if (err) {

                    console.log(err);

                } else {

                    response = {

                        message: 'File uploaded successfully',

                        filename: req.files[0].originalname

                    }

                }

                console.log(response)

                res.end(JSON.stringify(response));

            })

        })

        // 文件上传结束

    res.end(JSON.stringify(response));

})

var server = app.listen(8888, () => {

    var host = server.address().address

    var port = server.address().port

    console.log("应用实例,访问地址为 http://%s:%s", host, port)

});

同时创建index.html网页,源码如下:

<!DOCTYPE html>

<html>

 

<head>

    <meta charset="utf-8">

    <title>nodejs服务器创建</title>

</head>

 

<body>

    <form action="/process_get" method="POST" enctype="multipart/form-data">

        <label>Name:</label> <input type="text" name="first_name"> <br>

        <label>Last Name:</label> <input type="text" name="last_name"><br>

        <input type="file" name="image" size="50" /><br>

        <input type="submit" value="Submit">

    </form>

 

</body>

 

</html>

<html>

index.html、server.js、node_modules在同一目录下

使用npm server.js执行,运行结果是

使用express框架创建服务器,实行表单数据的提交和文件上传