web程序设计(11)——建立文件服务器(Nodejs)

实验要求

利用Node.js实现要给简单基于http的文件服务器。
要求:
1、利用http模块构建一个Http Server;
2、服务器对输入的URL进行解析,获取URL中的pathname;
3、将pathname和服务当前所在地址构造出一个绝对路径,显示这个路径下的文件与目录;
4、可以点击页面的中文件或目录,如果是文件则在页面显示文件内容,如果是目录则显示目录下的内容。
提示:文件的内容打开可以使用mime.lookup(‘文件名’);

实验目的

  1. 熟悉掌握Node.js建立服务器功能
  2. 用Nodejs实现前后端的分离

实验内容

  1. 调入应用中需要用到的模块,其中"use strict" 指令在 JavaScript 1.8.5 中新增。它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。“use strict” 的目的是指定代码在严格条件下执行。严格模式下用户不能使用未声明的变量。
    ‘use strict’
var http = require("http");
var url = require("url");
var fs = require("fs");
  1. 创建一个简单的服务器,设置端口号为5000
var serv = http.createServer();
serv.listen(5000, "localhost");
  1. 获取文件路径进行解析,根目录为server.js所在目录。
    访问服务器会发送两条请求:
    第一条是用户输入的地址
    第二条是加载页面在浏览器收藏夹中的显示图标
    第二条信息是不去处理的,应当过滤掉,不干扰处理第一条请求。所以加入icon请求忽略的代码
 var filePath = path.resolve();
    //icon请求忽略
    if (req.url == '/favicon.ico') {
   
        res.end();
        return;
  1. 处理请求的路径
    //访问请求的文件地址标准化
    var reqPath = path.normalize(req.url);
    //获取当前文件的路径
    var pathname = path.join(filePath, reqPath);
  2. 对获取的文件进行处理,判断其是否为文件夹,遍历文件夹
 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 {
   
                        files.forEach(function(file) {
   
                            if (
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值