在models文件夹中保存read_file.js,代码如下:
var fs = require('fs');
var read = {
//异步读取文件方法
read_file:function (file_path, func) {
fs.readFile(file_path, function (err, data) {
if (err) {
console.log(err);
} else {
func(data.toString());//传入回调函数
console.log(data.toString());
console.log('异步方法执行完毕');
}
})
},
//读取图片
read_img:function (file_path, res) {
fs.readFile(file_path, 'binary', function (err, data) {
if (err) {
console.log(err);
} else {
//console.log(data);
res.write(data, 'binary');
res.end();
}
})
}
}
module.exports = read;
在views文件夹下保存login.html,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
用户登录<br/>
<img src="./read_img" />
</body>
</html>
在models文件夹中保存router.js,代码如下:
var file_read = require('./read_file');
//自定义闭包函数
function get_call(req,res) {
//文件头写入类型
res.writeHead(200, {'Content-type':'text/html; charset=utf-8'});
function call(data) {
res.write(data);
res.end();
}
return call;
}
module.exports = {
login:function (req, res) {
var call = get_call(req, res);
file_read.read_file('./views/login.html', call)
},
//读取图片
read_img:function (req, res) {
//当要输出为图片时,文件头应该是'image/jpeg'类型的
res.writeHead(200, {'Content-type':'image/jpeg'});
file_read.read_img('./views/1.png',res);
}
}
保存d5_readimg.js,代码如下:
var http = require('http');
var url = require('url');
var router = require('./models/router');
http.createServer(function (req, res) {
if (req.url !== '/favicon.ico') {
var path_name = url.parse(req.url).pathname;
path_name = path_name.replace(/\//, '');
router[path_name](req, res);
}
}).listen(3000);
cmd 运行node d5_readimg.js
在浏览器中输入地址:http://localhost:3000/login,将显示如下内容: