Nodejs——搭建静态文件资源服务器_访问目录_显示文件内容_显示图片

一、功能实现

在这里插入图片描述

二、依赖库

  1. http:搭建HTTP服务器
  2. url:解析请求URL
  3. path:路径相关
  4. mime:打开文件
  5. fs:文件操作
  6. urlencode:url编码相关

三、源代码

//app.js
//导入所依赖的库
const var http = require("http");
const var url = require("url");
const var path =  require("path");
const var mime = require("mime");
const var fs = require("fs");
const var urlencode = require('urlencode');

//服务器框架
http.createServer(function(req, res){
	//获取路径名
    var pathname = url.parse(req.url).pathname;
    //URL解码,防止乱码
    pathname = urlencode.decode(pathname, 'utf-8');
    //排错
    if(pathname == "/favicon.ico") return;
    //获取根路径
    finalpath = __dirname + pathname;
    //如果文件存在:
    fs.exists(finalpath,function(exists){
        if(exists){
        	//如果是文件夹
            if(fs.statSync(finalpath).isDirectory()){
            	//获取文件夹的文件结构
                fs.readdir(finalpath,function(err,files){
                	//排错
                    if(err){
                        res.writeHead(200,{"Content-Type":'text/plain'});
                        res.end("<h1>404 page cannot be found</h1>");
                    }
                    //将文件结构写入页面
                    else{
                        var html = "<head><meta charset='utf-8'></head>";
                        var files = fs.readdirSync(finalpath);
                        //创建超链接打开文件
                        for (var i in files) {
                            var filename = files[i];
                            html += "<div><p>|-<a href='http://127.0.0.1:1314" +
                             		pathname + '/'+  filename + "'>" + filename + "</a></p></div>";
                        }
                        res.writeHead(200, {'content-type': 'text/html'});
                        res.end(html);
                    }
                })
            }
            //如果是文件
            else if(fs.statSync(finalpath).isFile()){
            	//打开文件
                fs.readFile(finalpath,function(err,data){
                    if(err) res.end("cannot read file!");
                    else {
                        res.writeHead(200,{"Content-Type":mime.getType(path.basename)});
                        res.end(data);
                    }
                })
            }
            else{
                res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
                res.end("<h1>404 page cannot be found!</h1>");
            }
        }
    })
}).listen(1314);//设置监听端口
console.log("Listening...");

在CMD运行js即可开启服务器

node app.js

四、效果演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值