放置js文件的公开服务器,node.js搭建简单静态文件服务器

此博客介绍了如何使用Node.js创建一个HTTP服务器,通过URL解析定位本地文件并根据MIME类型返回响应。它涵盖了文件路径处理、存在检查及不同文件类型的识别和内容发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//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('

404 NOT FOUND

');

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']

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值