使用Node.js快速搭建简单的静态文件服务器

Node.js-FileManager:这是一个简单文件管理器,用于按类别在服务器上下载和上传文件文件管理器由Node.js和Express组成。 您可以更改,改进并自己发布 Node.js文件管理器 这是一个简单文件管理器,用于按类别下载和上传服务器上的文件文件管理器由Node.js和Express组成。 您可以对其进行更改,改进和自行发布。 您也可以使用简单文件服务器与每个设备(例如台式机和移动设备)在本地网络上共享文件! 请在上关注我 立即下载

使用Node.js可以快速在本机上搭建一个静态文件服务器,对于开发JS项目非常有用。这是转载 Howard Zhang的代码,原文连接:

https://www.cnblogs.com/zamhown/p/6429163.html

"use strict";
//加载所需要的模块
var http = require('http');
var url = require('url');
var fs = require('fs');
var path = require('path');
var cp = require('child_process');

//创建服务
var httpServer = http.createServer(processRequest);

var port = 8080;

//指定一个监听的接口
httpServer.listen(port, function() {
    console.log(`app is running at port:${port}`);
    console.log(`url: http://localhost:${port}`);
    cp.exec(`explorer http://localhost:${port}`, function () {
    });
});

//响应请求的函数
function processRequest (request, response) {
    //mime类型
    var mime = {
        "css": "text/css",
        "gif": "image/gif",
        "html": "text/html",
        "ico": "image/x-icon",
        "jpeg": "image/jpeg",
        "jpg": "image/jpeg",
        "js": "text/javascript",
        "json": "application/json",
        "pdf": "application/pdf",
        "png": "image/png",
        "svg": "image/svg+xml",
        "swf": "application/x-shockwave-flash",
        "tiff": "image/tiff",
        "txt": "text/plain",
        "wav": "audio/x-wav",
        "wma": "audio/x-ms-wma",
        "wmv": "video/x-ms-wmv",
        "xml": "text/xml"
    };
    
    //request里面切出标识符字符串
    var requestUrl = request.url;
    //url模块的parse方法 接受一个字符串,返回一个url对象,切出来路径
    var pathName = url.parse(requestUrl).pathname;

    //对路径解码,防止中文乱码
    var pathName = decodeURI(pathName);

    //解决301重定向问题,如果pathname没以/结尾,并且没有扩展名
    if (!pathName.endsWith('/') && path.extname(pathName) === '') {
        pathName += '/';
        var redirect = "http://" + request.headers.host + pathName;
        response.writeHead(301, {
            location: redirect
        });
        //response.end方法用来回应完成后关闭本次对话,也可以写入HTTP回应的具体内容。
        response.end();
    }

    //获取资源文件的绝对路径
    var filePath = path.resolve(__dirname + pathName);
    console.log(filePath);
    //获取对应文件的文档类型
    //我们通过path.extname来获取文件的后缀名。由于extname返回值包含”.”,所以通过slice方法来剔除掉”.”,
    //对于没有后缀名的文件,我们一律认为是unknown。
    var ext = path.extname(pathName);
    ext = ext ? ext.slice(1) : 'unknown';

    //未知的类型一律用"text/plain"类型
    var contentType = mime[ext] || "text/plain";

    fs.stat(filePath, (err, stats) => {
        if (err) {
            response.writeHead(404, { "content-type": "text/html" });
            response.end("<h1>404 Not Found</h1>");
        }
        //没出错 并且文件存在
        if (!err && stats.isFile()) {
            readFile(filePath, contentType);
        }
        //如果路径是目录
        if (!err && stats.isDirectory()) {
            var html = "<head><meta charset = 'utf-8'/></head><body><ul>";
            //读取该路径下文件
            fs.readdir(filePath, (err, files) => {
                if (err) {
                    console.log("读取路径失败!");
                } else {
                    //做成一个链接表,方便用户访问
                    var flag = false;
                    for (var file of files) {
                        //如果在目录下找到index.html,直接读取这个文件
                        if (file === "index.html") {
                            readFile(filePath + (filePath[filePath.length-1]=='/' ? '' : '/') + 'index.html', "text/html");
                            flag = true;
                            break;
                        };
                        html += `<li><a href='${file}'>${file}</a></li>`;
                    }
                    if(!flag) {
                        html += '</ul></body>';
                        response.writeHead(200, { "content-type": "text/html" });
                        response.end(html);
                    }
                }
            });
        }

        //读取文件的函数
        function readFile(filePath, contentType){
            response.writeHead(200, { "content-type": contentType });
            //建立流对象,读文件
            var stream = fs.createReadStream(filePath);
            //错误处理
            stream.on('error', function() {
                response.writeHead(500, { "content-type": contentType });
                response.end("<h1>500 Server Error</h1>");
            });
            //读取文件
            stream.pipe(response);
        }
    });
}
放在项目根目录 server.js ,然后运行下面命令即可:

node server.js


浏览器访问:http://localhost:8080/


nodeJS搭建本地文件服务器的几种方法小结 搭建nodejs服务器步骤: 1.安装nodejs服务,node相当于apache服务器 2.在自己定义的目录下新建服务器文件如 server.js 例如,我在E:\PhpProject\HTML5\websocket下创建了server.js文件 var http = require('http');//引入http模块 //开启服务,监听8888端口 //端口号最好为6000以上 var server = http.createServer(function(req,res){ /* req用来接受客户端数据 res用来向客户端发送服务器数据 */ con 立即下载

相关推荐

如何通过nodejs快速搭建一个服务器

在前端开发过程中,可能某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习。本文主要讲解如何通过nodejs进行一个基础服务器搭建,包括如何将文件布置的服务器,以及基础接口的开发。后面可能会更新关于通过nodejs操作数据库,以及项目相关接口的开发。可能做一个简单的项目进行分享。当然,本文还是一些基础的东西,不过是手把手教学,还不抓紧卷起来。

ct5211314的博客 1万+

nodejs文件服务器

nodejs环境配置 nodejs安装下载参照菜鸟教程nodejs 可以将node.exe添加到环境变量中,直接使用node命令。 js代码 'use strict'; var http = require('http'); var fs = require('fs'); var path = require('path'); var querystring = require('querystring'); var host = process.env.host || '0.0.0.0'; va

Gao996的博客 3538

Nodejs创建一个简易文件服务器

使用Nodejs原生模块创建一个简易的文件服务器

akhxl的博客 1019

node.js搭建文件服务器,Node.js创建HTTP文件服务器使用示例

Node.js创建HTTP文件服务器使用示例发布时间:2020-08-26 01:41:13来源:脚本之家阅读:103作者:foruokHelloWorld示例只有演示意义,这次我们来搞一个实际的例子:文件服务器。我们使用Node.js创建一个HTTP协议的文件服务器,你可以使用浏览器或其它下载工具到文件服务器上下载文件。为了读取文件,我们会用到File System模块(名字是”fs”),St...

weixin_31317351的博客 1216

静态文件服务开源项目st常见问题解决方案

静态文件服务开源项目st常见问题解决方案 1. 项目基础介绍和主要编程语言 项目名称:st 项目描述:st是一个用于在Node.js环境中提供静态文件服务的模块。它可以处理文件ETag、缓存等功能,支持简单文件服务器配置。 主要编程语言:JavaScript 2. 新手使用时需特别注意的3个问题及解决步骤 问题1:如何快速搭建一个简单静态文件服务器? 问题描述: 新手可能不知道如何使用st模块...

gitblog_00593的博客 583

Node笔记之web服务器

node.js(开源和跨平台的javascript运行时环境)中为我们提供了一个名为Http的内置模块; 通过http内置模块可创建一个web服务器 实现代码 //实现步骤 //1.导入需要的模块 constpath=require('path') constfs=require('fs') consthttp=require('http') //2.创建基本的web服务器 constserver=http.createServer() //监听web服务...

weixin_49758946的博客 959

nodeJS搭建本地服务器(windows)

1. 下载并安装nodejs 2. install express(命令安装 cnpm install -g express) 3.新建js文件作为服务器运行 var path = require("path"); var express = require("express"); var app = express(); app.listen(9808); app.use(exp...

qq_35794739的博客 509

Node.js -http模块

概念:http 是 Node.js 内置的核心模块,用于创建 HTTP 服务器 和 处理 HTTP 请求 / 响应,是后端开发中搭建 Web 服务的基础。启动服务器:server.listen(端口, 回调),通过 http://localhost:端口 访问;可访问:http://localhost:3000');可访问:http://localhost:3000');res(响应):用于返回内容(res.setHeader() 设置响应头,res.end() 发送内容);终端显示 服务器启动成功!

2502_91146223的博客 432

http模块搭建一个服务器

http模块搭建一个服务器

陈小陈的博客 199

node.js 创建一个简单的web服务

node创建一个简单的web 服务,局域网内可以通过ip地址访问

rojie0的博客 337

node.js go java_ABAP,Java, nodejs和go语言的web server编程

ABAP and Javasee myblog.nodejsnodejs现成的express module,几行代码就能写个server出来:varexpress=require('express');varroutesEngine=require('./jerryapp/routes/index.js');//index.jsactuallyhttp://www.ruanyi...

weixin_36273006的博客 87

使用Express开发个人网站(一)

Express,基于Node.js平台,快速、开放、极简的 web 开发框架。   Node的出现,让js有了运行在服务器端的可能,基于此的Express,可以快速简单搭建起一个服务器与个人网站。 安装   首先安装nodejs,具体安装过程这里不再累述,进入到创建的应用目录,使用npm init命令创建一个package.json 文件,这个命令会要求你输入一些信息,比如像个人信息,应用的版本号等,可以直接跳过使用默认,只有一个entry point除外,这个参数规定了当前应用的入口文件,你可以使.

xiaozhen0610的博客 640

Node.js开发系列(二)

上一节我们做了一个最简单node.js版本web应用 使用express在server.js文件中我们使用node.js的http模块构造了一个最简单web应用。现在我们来改造一下,新的server.js文件如下: var http = require('http'); var fs = require('fs'); var expre...

weixin_33751566的博客 135

express简单笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33854644的博客 86

用Connect——HTTP中间件模块实现一个web服务器

虽然Node.js中的http核心模块可以用来实现web服务器,但要做很多工作,例如要检测每个文件的content type 因此我们决定用Connect模块,非常流行的Express web框架就是建立在Connect之上的   一个快速的静态web服务器: var connect = require('connect'); connect.createServer(     c...

我的博客 386

每日JavaScrip - 14

构建一个简单的express服务器 首先要具备node环境,然后 npm init npm i express --save 然后在文件夹中新建一个server.js,写入如下代码 const express = require('express') const app = express() // 默认将index.html当作访问页面 app.use(express.static(__dir...

tcap99的博客 147

vue 打包后本地先自己启动服务 anywhere 非常好用

:)nodejs服务器Anywhere Anywhere是一个随启随用的静态服务器,它可以随时随地将你的当前目录变成一个静态文件服务器的根目录。 一,安装nodenodejs官网下载,安装后打开cmd命令行,输入node -v 查看是否安装成功,安装成功则会出现node的版本号,如: 安装node 二,在命令行执行 npm install anywher...

weixin_30679823的博客 262
上一篇: 清理xcode临时文件
下一篇: firebase messaging - Register for remote notification
我行我素2018
博客等级 码龄22年 34粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值