//server.js
varhttp=require('http');
varurl=require('url');
varfs=require('fs');
varpath=require('path');
vartypes=require('./mimes').types;
http.createServer(function(req,res){
//文件在本地的路径
varb='C:/data/';
//varp='assets'+url.parse(req.url).pathname;
varp=url.parse(req.url).pathname;
varrealpath=b+p;
fs.exists(realpath,function(exists){
if(!exists){
res.writeHead(404,{
'Content-type':'text/html;charset=utf-8'
});
res.write('
404NOTFOUND
');res.write(p+'doesn\'texists.');
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{
varext=path.extname(realpath);
ext=ext?ext.slice(1):'unknown';
varcontentType=types[ext]||'text/plain';
res.writeHead(200,{
'Content-type':contentType
});
res.write(data,'binary');
res.end();
}
});
}
});
}).listen(80);
console.log('Serverrunningatlocalhost: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']
};