实验要求
利用Node.js实现要给简单基于http的文件服务器。
要求:
1、利用http模块构建一个Http Server;
2、服务器对输入的URL进行解析,获取URL中的pathname;
3、将pathname和服务当前所在地址构造出一个绝对路径,显示这个路径下的文件与目录;
4、可以点击页面的中文件或目录,如果是文件则在页面显示文件内容,如果是目录则显示目录下的内容。
提示:文件的内容打开可以使用mime.lookup(‘文件名’);
实验目的
- 熟悉掌握Node.js建立服务器功能
- 用Nodejs实现前后端的分离
实验内容
- 调入应用中需要用到的模块,其中"use strict" 指令在 JavaScript 1.8.5 中新增。它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。“use strict” 的目的是指定代码在严格条件下执行。严格模式下用户不能使用未声明的变量。
‘use strict’
var http = require("http");
var url = require("url");
var fs = require("fs");
- 创建一个简单的服务器,设置端口号为5000
var serv = http.createServer();
serv.listen(5000, "localhost");
- 获取文件路径进行解析,根目录为server.js所在目录。
访问服务器会发送两条请求:
第一条是用户输入的地址
第二条是加载页面在浏览器收藏夹中的显示图标
第二条信息是不去处理的,应当过滤掉,不干扰处理第一条请求。所以加入icon请求忽略的代码
var filePath = path.resolve();
//icon请求忽略
if (req.url == '/favicon.ico') {
res.end();
return;
- 处理请求的路径
//访问请求的文件地址标准化
var reqPath = path.normalize(req.url);
//获取当前文件的路径
var pathname = path.join(filePath, reqPath); - 对获取的文件进行处理,判断其是否为文件夹,遍历文件夹
if (fs.statSync(pathname).isDirectory()) {
//同步处理判断是否是文件夹,如果是进行遍历
var addStr = '<link rel="stylesheet" href="/public/css/index.css"/>';//链接提前写好的CSS简单样式
addStr += '<h1>查看文件夹</h1>'; //如果是进入文件夹,则添加标题
addStr += '<ul>';
//遍历文件
fs.readdir(pathname, function(err, files) {
res.writeHead(200, {
"Content-Type": "text/html;charset=utf-8" });//读入文件中的数据
if (err) {
console.log(err);
} else