首页 > 编程语言 >node.js启动文件服务器 并自动查询index.html等默认文件

node.js启动文件服务器 并自动查询index.html等默认文件

时间:2024-04-04 11:57:19浏览次数:23  
标签:node 文件 index 默认 var path defaultFileIndex

方法1

'use strict';

const http = require('http'),
    fs = require('fs'),
    url = require('url'),
    path = require('path');

// 从命令行参数获取root目录,默认是当前目录
var root = path.resolve(process.argv[2] || '.');

console.log('Static root dir:' + root);

// 定义文件夹下的默认访问的文件
var defaultFiles = ['index','index.html','index.htm','index.php','default.html'];

// 创建服务器
var server = http.createServer(function(request,response){
    
    // 获得URL的path
    var pathname = url.parse(request.url).pathname;
    // 获得对应的本地文件路径
    var filepath = path.join(root,pathname);

    // 标记查找到第几个默认文件
    var defaultFileIndex = 0;
    // 查找默认文件
    const findDefaultFunc = function() {
        const p = path.join(filepath,defaultFiles[defaultFileIndex]);
        defaultFileIndex++ ;
        findFileFunc(p);
    }

    // 查找文件
    const findFileFunc = function(p){
        // 获取文件状态
        fs.stat(p,function(err,stats){
            if(!err && stats.isFile()){
                // 如果没有出错并且文件存在
                console.log('200 '+request.url);
                // 发送200响应
                response.writeHead(200);
                // 将文件流导向response
                fs.createReadStream(p).pipe(response);
            }else if(!err && defaultFileIndex ===0 && stats.isDirectory()){
                // 如果是第一次查找发现是文件夹,就去查找默认文件
                findDefaultFunc()
            }else if(defaultFileIndex > 0 && defaultFileIndex < defaultFiles.length){
                // 如果已经经历过查找默认文件的程序,但任然没找到,继续查找剩下定义的默认文件
                findDefaultFunc()
            }else{
                // 所有默认文件都查找过了,任然没找到
                console.log('404 ' + request.url);
                // 发送404响应
                response.writeHead(404);
                response.end('404 Not Found');
            }
        })
    }
    findFileFunc(filepath);
})

server.listen(8080);

console.log('Server is runing at http://127.0.0.1:8080/');

代码来源以下文章的评论区

https://www.liaoxuefeng.com/wiki/1022910821149312/1023025830950720

 

方法2:

 

标签:node,文件,index,默认,var,path,defaultFileIndex
From: https://www.cnblogs.com/yuyanc/p/18114032

相关文章

  • 局域网配置共享文件夹,开机自动共享
    设置文件夹共享选择文件夹:首先,确定你想要共享的文件夹。共享文件夹:右键点击文件夹,选择“属性”,然后切换到“共享”标签页。点击“高级共享”,勾选“共享此文件夹”,并设置共享名称。配置用户权限在共享设置中,你可以通过点击“权限”按钮来设置哪些用户或用户组可以访问共享文......
  • node.js启动http服务
    新建一个文件server.js,代码如下//导入http模块consthttp=require('http');//定义主机和端口号consthostname='127.0.0.1';constport=3000;//创建HTTP服务器constserver=http.createServer((req,res)=>{//获得HTTP请求的method和url:console.......
  • idea建多级目录出现问题,报错找不到xml文件,如何解决?
    ......
  • python 如何操作pdf文件
    在Python中操作PDF文件通常涉及以下几个常见的任务:读取PDF内容、创建PDF文件、编辑PDF文件、合并PDF文件、拆分PDF文件等。下面我将介绍如何使用Python中的几个主要库来执行这些操作。读取PDF内容要读取PDF文件的内容,可以使用PyPDF2库。以下是一个简单的示例代码,演示如何......
  • 盘点一个dbeaver导入csv文件到sql server报错的一个问题
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【金光灿灿】问了一个dbeaver导入csv文件到sqlserver报错的一个问题,问题如下:我在使用dbeaver导入csv文件到sqlserver时一直出现Can'tparsenumericvalue[B02010ZZZ]usingformatter这样的报错二、实现过程......
  • Maven工程上传文件(速成)
    一、打开Idea新建Maven工程,工程目录如下二、配置pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation......
  • linux小技巧(一)--文件比较
    文章目录linux小技巧(一)--文件比较1.diff基本输出解释基本示例diff常见符号常见的diff选项linux小技巧(一)–文件比较1.diffdiff命令是一种在Unix、Linux和类Unix系统中广泛使用的命令行工具,用于比较两个文件的内容差异。基本输出解释当diff命令比较两个文......
  • Win10文件夹共享(有密码的安全共享)(SMB协议共享)
    前言局域网内(无安全问题,比如自己家里wifi)无密码访问,参考之前的操作视频【电脑文件全平台共享、播放器推荐】手机、电视、平板播放硬盘中的音、视频资源下面讲解公共网络如办公室网络、咖啡厅网络等等环境下带密码的安全共享方式。0.背景将插到电脑上的移动硬盘里面的音视......
  • 如何根据JSON文件内容生成自定义对象
    在Python中,你可以使用json模块来解析JSON文件,并将解析后的数据映射到自定义的Python对象上。这通常涉及到定义一个类,并为该类实现一个__init__方法来初始化对象的属性。然后,你可以编写一个函数来读取JSON文件,将解析后的数据传递给类的构造函数,从而创建自定义对象。下面是一个简单......
  • 自动修改主机名称并加入hosts文件-脚本
    这里只写了两个案例。我这里是8网段如果地址不一样修改就好了,需要几个添几个。根据不同的地址修改主机名,也可以修改${name},注释掉第七行在将第八行的${name}修改成确定的主机名。 之后执行就好。#!/bin/bash#changehostnamesciptsip=192.168.8.ifconfigens33|grepin......