文档章节

node.js搭建简单静态文件服务器

7
 761218914
发布于 2016/05/08 21:02
字数 511
阅读 15
收藏 0

是从这里看到的http://page.renren.com/601228958/note/884506744完美可用

//server.js

var http = require('http');
var url = require('url');
var fs = require('fs');
var path = require('path');
var types = require('./mimes').types;

http.createServer(function(req,res){

//文件在本地的路径

    var b = 'C:/data/';
   // var p = 'assets' + url.parse(req.url).pathname;
    var p = url.parse(req.url).pathname;
    var realpath = b + p;

    fs.exists(realpath,function(exists){
        if(!exists){
            res.writeHead(404,{
                'Content-type':'text/html;charset=utf-8'
            });

            res.write('<h1>404 NOT FOUND</h1>');
            res.write(p + ' doesn\'t exists.');
            res.end();
        }else{
            fs.readFile(realpath,'binary',function(err,data){
                if(err){
                    res.writeHead(500,{
                        'Content-type':'text/html;charset=utf-8'
                    });
                    res.end(err);
                }else{

                    var ext = path.extname(realpath);

                    ext = ext ? ext.slice(1) : 'unknown';

                    var contentType = types[ext] || 'text/plain';

                    res.writeHead(200,{
                        'Content-type':contentType
                    });

                    res.write(data,'binary');
                    res.end();
                }
            });
        }
    });

}).listen(80);

console.log('Server running at localhost:80'); 


//mimes.js
exports.types = {
    'hqx':'application/mac-binhex40',
    'cpt':'application/mac-compactpro',
    'csv':['text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'],
    'bin':'application/macbinary',
    'dms':'application/octet-stream',
    'lha':'application/octet-stream',
    'lzh':'application/octet-stream',
    'exe':['application/octet-stream', 'application/x-msdownload'],
    'class':'application/octet-stream',
    'psd':'application/x-photoshop',
    'so':'application/octet-stream',
    'sea':'application/octet-stream',
    'dll':'application/octet-stream',
    'oda':'application/oda',
    'pdf':['application/pdf', 'application/x-download'],
    'ai':'application/postscript',
    'eps':'application/postscript',
    'ps':'application/postscript',
    'smi':'application/smil',
    'smil':'application/smil',
    'mif':'application/vnd.mif',
    'xls':['application/excel', 'application/vnd.ms-excel', 'application/msexcel'],
    'ppt':['application/powerpoint', 'application/vnd.ms-powerpoint'],
    'wbxml':'application/wbxml',
    'wmlc':'application/wmlc',
    'dcr':'application/x-director',
    'dir':'application/x-director',
    'dxr':'application/x-director',
    'dvi':'application/x-dvi',
    'gtar':'application/x-gtar',
    'gz':'application/x-gzip',
    'php':'application/x-httpd-php',
    'php4':'application/x-httpd-php',
    'php3':'application/x-httpd-php',
    'phtml':'application/x-httpd-php',
    'phps':'application/x-httpd-php-source',
    'js':'application/x-javascript',
    'swf':'application/x-shockwave-flash',
    'sit':'application/x-stuffit',
    'tar':'application/x-tar',
    'tgz':['application/x-tar', 'application/x-gzip-compressed'],
    'xhtml':'application/xhtml+xml',
    'xht':'application/xhtml+xml',
    'zip':['application/x-zip', 'application/zip', 'application/x-zip-compressed'],
    'mid':'audio/midi',
    'midi':'audio/midi',
    'mpga':'audio/mpeg',
    'mp2':'audio/mpeg',
    'mp3':['audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'],
    'aif':'audio/x-aiff',
    'aiff':'audio/x-aiff',
    'aifc':'audio/x-aiff',
    'ram':'audio/x-pn-realaudio',
    'rm':'audio/x-pn-realaudio',
    'rpm':'audio/x-pn-realaudio-plugin',
    'ra':'audio/x-realaudio',
    'rv':'video/vnd.rn-realvideo',
    'wav':['audio/x-wav', 'audio/wave', 'audio/wav'],
    'bmp':['image/bmp', 'image/x-windows-bmp'],
    'gif':'image/gif',
    'jpeg':['image/jpeg', 'image/pjpeg'],
    'jpg':['image/jpeg', 'image/pjpeg'],
    'jpe':['image/jpeg', 'image/pjpeg'],
    'png':['image/png', 'image/x-png'],
    'tiff':'image/tiff',
    'tif':'image/tiff',
    'css':'text/css',
    'html':'text/html',
    'htm':'text/html',
    'shtml':'text/html',
    'txt':'text/plain',
    'text':'text/plain',
    'log':['text/plain', 'text/x-log'],
    'rtx':'text/richtext',
    'rtf':'text/rtf',
    'xml':'text/xml',
    'xsl':'text/xml',
    'mpeg':'video/mpeg',
    'mpg':'video/mpeg',
    'mpe':'video/mpeg',
    'qt':'video/quicktime',
    'mov':'video/quicktime',
    'avi':'video/x-msvideo',
    'movie':'video/x-sgi-movie',
    'doc':'application/msword',
    'docx':['application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'],
    'xlsx':['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'],
    'word':['application/msword', 'application/octet-stream'],
    'xl':'application/excel',
    'eml':'message/rfc822',
    'json':['application/json', 'text/json']
};

© 著作权归作者所有

共有 人打赏支持
7
粉丝 5
博文 133
码字总数 47263
作品 0
南昌
程序员
私信 提问
深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件

上一篇专栏简单介绍了Connect模块的基本架构,它的执行模型十分简单,中间件机制也使得它十分易于扩展,具备良好的可伸缩性。在Connect的良好机制下,我们本章开始将逐步解开Connect生态圈中...

leeldy
2012/10/25
0
0
koa框架 mp2 node服务搭建swagger服务

说明:用koa2搭建静态文件服务器,mp2管理node服务,搭建swagger-ui和swagger-editor服务,项目地址:koa-swagger 1、环境搭建 安装最新版nodejs 新建文件夹koa-swagger,在文件夹内创建swa...

hkaikai
2018/07/04
0
0
效率至上的nodejs 手动实现服务器

这是一个连续的node学习笔记, 本文是第一章, 会持续更新, 持续完善 python好用,用久了就会把人的脾气养起来, nodejs不好用, 但效率很好, 也能彻底治好你的坏脾气 nodejs的回调是我用过的最蛋...

木子昭
2018/08/20
0
0
Express新手入坑笔记之动态渲染HTML

在日常项目中,我喜欢用Django做后端, 因为大而全 如果只是写一个简单服务的话, Express是更好的选择, Express是基于nodejs的一个后端框架,特点是简单,轻量, 容易搭建, 而且性能非凡,...

木子昭
2018/12/12
0
0
NGINX反向代理文件服务器,页面无法获取返回的流

本人java程序员,多年前出于好奇,用nodejs写了一个文件服务器,在生产环境也运行许久,直接用浏览器没问题,但是通过nginx反向代理后页面呈现空白。(估计浏览器和我一样 都是一脸懵逼) 用...

wowxhycoming
2016/06/29
612
0

没有更多内容

加载失败,请刷新页面

加载更多

Flink 幕后之内存管理

Flink 幕后之内存管理 引言 目前很多大数据处理框架,例如Hadoop、Spark、Storm、Flink等。它们都基于JVM语言开发(java or scala),运行在JVM上。为了加速合并或者排序(基于磁盘的方式通常...

moyiguke
12分钟前
1
0
风起云涌,看云计算如何赋能媒体行业?

在媒体行业的转型升级中,云计算的出现多维度促进了媒体融合,打破传统媒体行业与新媒体的界限和竞争格局,在媒体素材管理、移动端功能演进的过程中扮演着重要角色,颠覆了传统媒体新闻采编、...

七牛云
14分钟前
0
0
Mybatis开发遇到问题汇总

mybatis 中![CDATA[...]] 在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不希望它被转义,可以使用<![CDATA[ ]]>. 这是XML...

wangwei2134
23分钟前
0
0
参数验证 @Validated 和 @Valid 的区别

来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范......

Java技术栈
25分钟前
0
0
JS实现继承的几种方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: ...

不负好时光
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部