安装 Express
$ npm install 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编码)的表单数据。
$ cnpm install body-parser--save
$ cnpm install cookie-parser--save
$ cnpm install multer--save
安装完后,我们可以查看下 express 使用的版本号:
$ cnpm list express
server.js
var express = require("express");
var app = express();
var fs = require("fs");
app.get('/', function(req, res) {
res.sendFile(__dirname + "/" + "index.htm");
console.log("Cookies: ", req.cookies)
});
var server = app.listen(8081, function() {
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
执行 node server.js
打开浏览器访问 http://127.0.0.1:8081,会打开index.htm页面
index.htm
<form action="http://127.0.0.1:8081/addUser_g" method="GET">
name: <input type="text" name="name" /><br/>
password:<input type="text" name="password"/><br />
profession: <input type="text" name="profession"/><br/>
<button type="submit">submit</button>
</form>
<form action="http://127.0.0.1:8081/addUser_p method="POST">
name:<input type="text" name="name"/><br/>
passeord:<input type="text" name="password"/><br/>
proffession:<input type="text" name="profession"/><br/>
<button type="submit">submit</button>
</form>
server.js
var cookieParser = require('cookie-parser');
app.use(cookieParser());
app.get('/addUser_g', function(req, res) {//get请求
console.log(req.query)
fs.readFile(__dirname + "/" + "users.json", "utf8", function(err, data) {//文件读取
data = JSON.parse(data);
console.log(data);
var id = data.users[data.users.length - 1].id;
req.query.id = id + 1;
data.users.push(req.query)
console.log(data);
fs.writeFile('users.json', JSON.stringify(data), function(err) {//文件写入
if(err) {
return console.error(err);
}
console.log("数据写入成功!");
console.log("--------我是分割线-------------")
console.log("读取写入的数据!");
fs.readFile('users.json', function(err, data) {
if(err) {
return console.error(err);
}
console.log("异步读取文件数据: " + data.toString());
});
});
res.end(JSON.stringify(data))
})
})
//post
var bodyParser = require('body-parser');
// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({extended: false})
app.post('/addUser_p', urlencodedParser, function(req, res) {
//同get,传入的数据在req.body中
})
//上传文件
server.js
var multer = require('multer');
app.use(multer({ dest: '/tmp/'}).array('image'));//input 的name
app.post('/file_upload',urlencodedParser, function (req, res) {
console.log(req.files[0]); // 上传的文件信息
var des_file = __dirname + "/uploadFile/" + req.files[0].originalname;//存放的文件位置及文件名,不能放在不存在的文件夹内
fs.readFile( req.files[0].path, function (err, data) {
fs.writeFile(des_file, data, function (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 ) );
});
});
})
index.htm
<form action="/file_upload" method="POST" enctype="multipart/form-data">
<input type="file" name="image" size="50" accept="image/png,image/gif"/>
<input type="submit" value="Submit">
</form>