zoukankan      html  css  js  c++  java
  • node04---fs文件操作、静态服务器

    08fs.js

    var http = require("http");
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        //不处理小图标
        if(req.url == "/favicon.ico"){
            return;
        }
        //给用户加一个五位数的id
        var userid = parseInt(Math.random() * 89999) + 10000;
        
        console.log("欢迎" + userid);
    
        res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});
        //两个参数,第一个是完整路径,当前目录写./
        //第二个参数,就是回调函数,表示文件读取成功之后,做的事情,文件前面必须加./表示当前目录,
        fs.readFile("./test/1.txt",function(err,data){
            if(err){
                throw err;
            }
            console.log(userid + "文件读取完毕");
            res.end(data);
        });
        
    });
    
    server.listen(3000,"127.0.0.1");

    09fs.js

    var http = require("http");
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        //不处理小图标
        if(req.url == "/favicon.ico"){
            return;
        }
        fs.mkdir("./album1/999");//异步
    });
    
    server.listen(3000,"127.0.0.1");

    10fs.js

    var http = require("http");
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        //不处理小图标
        if(req.url == "/favicon.ico"){
            return;
        }
        //stat检测状态
        fs.stat("./album/bbb",function(err,state){//state是文件状态
            //检测这个路径,是不是一个文件夹
            console.log(state.isDirectory());
        });
    });
    
    server.listen(3000,"127.0.0.1");

    11fs.js

    var http = require("http");
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        //不处理小图标
        if(req.url == "/favicon.ico"){
            return;
        }
        //存储所有的文件夹
        var wenjianjia = [];
        //readdir读取文件,files是读取到的文件
        fs.readdir("./album",function(err,files){//异步
            //files是个文件名的数组,并不是文件的数组,表示./album这个文件夹中的所有东西
            //包括文件、文件夹
            for(var i = 0 ; i < files.length ;i++){
                var thefilename = files[i];
                console.log(thefilename);//0.jpg,1.jpg,2.jpg,3.jpg,4.jpg,aaa,ccc
                //又要进行一次检测
                fs.stat("./album/" + thefilename , function(err,stats){//异步
                    //如果他是一个文件夹,那么输出它:
                    if(stats.isDirectory()){
                        console.log("111" + thefilename);
                        wenjianjia.push(thefilename);
                    }
                    console.log("333" + wenjianjia);
                });
                console.log("444" + wenjianjia);
            }
            console.log("222" + wenjianjia);
        });
        console.log("555" + wenjianjia);
    });
    
    server.listen(3000,"127.0.0.1");
    /*
    files有3个图片,2个aaa,ccc文件夹。
    
    for循环里面有异步,for循环执行很快,当thefilename是aaa时候,读取aaa文件夹,for循环把他改成了ccc,所以读取的就是ccc文件夹。
    555
    0.jpg 444,1.jpg 444,2.jpg 444 ,aaa 444, ccc 444
    222
    333 333 333
    111 ccc
    333 ccc
    111 ccc
    333ccc,ccc
    */

    12fs.js

    var http = require("http");
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        //不处理收藏夹小图标
        if(req.url == "/favicon.ico"){
            return;
        }
        //遍历album里面的所有文件、文件夹
        fs.readdir("./album/",function(err,files){
            //files : ["0.jpg","1.jpg" ……,"aaa","bbb"]; files是一个存放文件(夹)名的数组
            //存放文件夹的数组
            var wenjianjia = [];
            //迭代器就是强行把异步的函数,变成同步的函数
            //1做完了,再做2;2做完了,再做3
            (function iterator(i){
                //遍历结束
                if(i == files.length){
                    console.log(wenjianjia);
                    return;
                }
                fs.stat("./album/" + files[i],function(err,stats){
                    //检测成功之后做的事情
                    if(stats.isDirectory()){
                        //如果是文件夹,那么放入数组。不是,什么也不做。
                        //wenjianjia.push(files[i]);
                    }
                    wenjianjia.push(files[i]);
                    iterator(i+1);//执行下一个
                });
            })(0);//立即执行,执行第0 个
        });
        res.end();
    });
    
    server.listen(3000,"127.0.0.1");
    
    //[ '0.jpg', '1.jpg', '2.jpg', 'aaa', 'ccc' ]

    13fs.js

    var http = require("http");
    var fs = require("fs");
    var wenjianjia = [];
    
    var server = http.createServer(function(req,res){
        if(req.url == "/favicon.ico"){
            return;
        }
        fs.readdir("./album/",function(err,files){//异步
            f(files,0);
        });
        res.end();
    });
    
    function f(files,i){
        if(i == files.length){
            console.log(wenjianjia);
            return;
        }
        fs.stat("./album/" + files[i],function(err,stats){//异步,没有for循环,不会出现数据不安全
            if(stats.isDirectory()){
                //wenjianjia.push(files[i]);
            }
            wenjianjia.push(files[i]);
            f(files,i+1);//执行下一个
        });
        
    }
    server.listen(3000,"127.0.0.1");
    
    //[ '0.jpg', '1.jpg', '2.jpg', 'aaa', 'ccc' ]

    静态服务器

    var http = require("http");
    var url = require("url");
    var fs = require("fs");
    var path = require("path");
    
    http.createServer(function(req,res){
        //得到用户的路径
        var pathname = url.parse(req.url).pathname;
        console.log("url.parse(req.url):" + url.parse(req.url));
        //默认首页
        if(pathname == "/"){
            pathname = "index.html";
        }
        console.log("pathname:" + pathname);
        
        //拓展名
        var extname = path.extname(pathname);
        console.log("extname:" + extname);
        
        //真的读取这个文件,index.html里面的css,js,图片加载时候也是通过这个方法,通过url的pathname和扩展名
        fs.readFile("./static/" + pathname,function(err,data){
            if(err){
                //如果此文件不存在,就应该用404返回
                fs.readFile("./static/404.html",function(err,data){
                    res.writeHead(404,{"Content-type":"text/html;charset=UTF8"});
                    res.end(data);
                });
                return;
            };
            //MIME类型,就是
            //网页文件:  text/html
            //jpg文件 :   image/jpg
            var mime = getMime(extname);
            res.writeHead(200,{"Content-type":mime});//不加这个浏览器就解析不出来css  js
            res.end(data);
            console.log(data);
        });
    
    }).listen(3000,"127.0.0.1");
    
    function getMime(extname){
        switch(extname){
            case ".html" :
                return "text/html";
                break;
            case ".jpg" : 
                return "image/jpg";
                break;
            case ".css":
                return "text/css";
                break;
        }
    }

    浏览器mime类型

    { ".323":"text/h323" ,
      ".3gp":"video/3gpp" ,
      ".aab":"application/x-authoware-bin" ,
      ".aam":"application/x-authoware-map" ,
      ".aas":"application/x-authoware-seg" ,
      ".acx":"application/internet-property-stream" ,
      ".ai":"application/postscript" ,
      ".aif":"audio/x-aiff" ,
      ".aifc":"audio/x-aiff" ,
      ".aiff":"audio/x-aiff" ,
      ".als":"audio/X-Alpha5" ,
      ".amc":"application/x-mpeg" ,
      ".ani":"application/octet-stream" ,
      ".apk":"application/vnd.android.package-archive" ,
      ".asc":"text/plain" ,
      ".asd":"application/astound" ,
      ".asf":"video/x-ms-asf" ,
      ".asn":"application/astound" ,
      ".asp":"application/x-asap" ,
      ".asr":"video/x-ms-asf" ,
      ".asx":"video/x-ms-asf" ,
      ".au":"audio/basic" ,
      ".avb":"application/octet-stream" ,
      ".avi":"video/x-msvideo" ,
      ".awb":"audio/amr-wb" ,
      ".axs":"application/olescript" ,
      ".bas":"text/plain" ,
      ".bcpio":"application/x-bcpio" ,
      ".bin ":"application/octet-stream" ,
      ".bld":"application/bld" ,
      ".bld2":"application/bld2" ,
      ".bmp":"image/bmp" ,
      ".bpk":"application/octet-stream" ,
      ".bz2":"application/x-bzip2" ,
      ".c":"text/plain" ,
      ".cal":"image/x-cals" ,
      ".cat":"application/vnd.ms-pkiseccat" ,
      ".ccn":"application/x-cnc" ,
      ".cco":"application/x-cocoa" ,
      ".cdf":"application/x-cdf" ,
      ".cer":"application/x-x509-ca-cert" ,
      ".cgi":"magnus-internal/cgi" ,
      ".chat":"application/x-chat" ,
      ".class":"application/octet-stream" ,
      ".clp":"application/x-msclip" ,
      ".cmx":"image/x-cmx" ,
      ".co":"application/x-cult3d-object" ,
      ".cod":"image/cis-cod" ,
      ".conf":"text/plain" ,
      ".cpio":"application/x-cpio" ,
      ".cpp":"text/plain" ,
      ".cpt":"application/mac-compactpro" ,
      ".crd":"application/x-mscardfile" ,
      ".crl":"application/pkix-crl" ,
      ".crt":"application/x-x509-ca-cert" ,
      ".csh":"application/x-csh" ,
      ".csm":"chemical/x-csml" ,
      ".csml":"chemical/x-csml" ,
      ".css":"text/css" ,
      ".cur":"application/octet-stream" ,
      ".dcm":"x-lml/x-evm" ,
      ".dcr":"application/x-director" ,
      ".dcx":"image/x-dcx" ,
      ".der":"application/x-x509-ca-cert" ,
      ".dhtml":"text/html" ,
      ".dir":"application/x-director" ,
      ".dll":"application/x-msdownload" ,
      ".dmg":"application/octet-stream" ,
      ".dms":"application/octet-stream" ,
      ".doc":"application/msword" ,
      ".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,
      ".dot":"application/msword" ,
      ".dvi":"application/x-dvi" ,
      ".dwf":"drawing/x-dwf" ,
      ".dwg":"application/x-autocad" ,
      ".dxf":"application/x-autocad" ,
      ".dxr":"application/x-director" ,
      ".ebk":"application/x-expandedbook" ,
      ".emb":"chemical/x-embl-dl-nucleotide" ,
      ".embl":"chemical/x-embl-dl-nucleotide" ,
      ".eps":"application/postscript" ,
      ".epub":"application/epub+zip" ,
      ".eri":"image/x-eri" ,
      ".es":"audio/echospeech" ,
      ".esl":"audio/echospeech" ,
      ".etc":"application/x-earthtime" ,
      ".etx":"text/x-setext" ,
      ".evm":"x-lml/x-evm" ,
      ".evy":"application/envoy" ,
      ".exe":"application/octet-stream" ,
      ".fh4":"image/x-freehand" ,
      ".fh5":"image/x-freehand" ,
      ".fhc":"image/x-freehand" ,
      ".fif":"application/fractals" ,
      ".flr":"x-world/x-vrml" ,
      ".flv":"flv-application/octet-stream" ,
      ".fm":"application/x-maker" ,
      ".fpx":"image/x-fpx" ,
      ".fvi":"video/isivideo" ,
      ".gau":"chemical/x-gaussian-input" ,
      ".gca":"application/x-gca-compressed" ,
      ".gdb":"x-lml/x-gdb" ,
      ".gif":"image/gif" ,
      ".gps":"application/x-gps" ,
      ".gtar":"application/x-gtar" ,
      ".gz":"application/x-gzip" ,
      ".h":"text/plain" ,
      ".hdf":"application/x-hdf" ,
      ".hdm":"text/x-hdml" ,
      ".hdml":"text/x-hdml" ,
      ".hlp":"application/winhlp" ,
      ".hqx":"application/mac-binhex40" ,
      ".hta":"application/hta" ,
      ".htc":"text/x-component" ,
      ".htm":"text/html" ,
      ".html":"text/html" ,
      ".hts":"text/html" ,
      ".htt":"text/webviewhtml" ,
      ".ice":"x-conference/x-cooltalk" ,
      ".ico":"image/x-icon" ,
      ".ief":"image/ief" ,
      ".ifm":"image/gif" ,
      ".ifs":"image/ifs" ,
      ".iii":"application/x-iphone" ,
      ".imy":"audio/melody" ,
      ".ins":"application/x-internet-signup" ,
      ".ips":"application/x-ipscript" ,
      ".ipx":"application/x-ipix" ,
      ".isp":"application/x-internet-signup" ,
      ".it":"audio/x-mod" ,
      ".itz":"audio/x-mod" ,
      ".ivr":"i-world/i-vrml" ,
      ".j2k":"image/j2k" ,
      ".jad":"text/vnd.sun.j2me.app-descriptor" ,
      ".jam":"application/x-jam" ,
      ".jar":"application/java-archive" ,
      ".java":"text/plain" ,
      ".jfif":"image/pipeg" ,
      ".jnlp":"application/x-java-jnlp-file" ,
      ".jpe":"image/jpeg" ,
      ".jpeg":"image/jpeg" ,
      ".jpg":"image/jpeg" ,
      ".jpz":"image/jpeg" ,
      ".js":"application/x-javascript" ,
      ".jwc":"application/jwc" ,
      ".kjx":"application/x-kjx" ,
      ".lak":"x-lml/x-lak" ,
      ".latex":"application/x-latex" ,
      ".lcc":"application/fastman" ,
      ".lcl":"application/x-digitalloca" ,
      ".lcr":"application/x-digitalloca" ,
      ".lgh":"application/lgh" ,
      ".lha":"application/octet-stream" ,
      ".lml":"x-lml/x-lml" ,
      ".lmlpack":"x-lml/x-lmlpack" ,
      ".log":"text/plain" ,
      ".lsf":"video/x-la-asf" ,
      ".lsx":"video/x-la-asf" ,
      ".lzh":"application/octet-stream" ,
      ".m13":"application/x-msmediaview" ,
      ".m14":"application/x-msmediaview" ,
      ".m15":"audio/x-mod" ,
      ".m3u":"audio/x-mpegurl" ,
      ".m3url":"audio/x-mpegurl" ,
      ".m4a":"audio/mp4a-latm" ,
      ".m4b":"audio/mp4a-latm" ,
      ".m4p":"audio/mp4a-latm" ,
      ".m4u":"video/vnd.mpegurl" ,
      ".m4v":"video/x-m4v" ,
      ".ma1":"audio/ma1" ,
      ".ma2":"audio/ma2" ,
      ".ma3":"audio/ma3" ,
      ".ma5":"audio/ma5" ,
      ".man":"application/x-troff-man" ,
      ".map":"magnus-internal/imagemap" ,
      ".mbd":"application/mbedlet" ,
      ".mct":"application/x-mascot" ,
      ".mdb":"application/x-msaccess" ,
      ".mdz":"audio/x-mod" ,
      ".me":"application/x-troff-me" ,
      ".mel":"text/x-vmel" ,
      ".mht":"message/rfc822" ,
      ".mhtml":"message/rfc822" ,
      ".mi":"application/x-mif" ,
      ".mid":"audio/mid" ,
      ".midi":"audio/midi" ,
      ".mif":"application/x-mif" ,
      ".mil":"image/x-cals" ,
      ".mio":"audio/x-mio" ,
      ".mmf":"application/x-skt-lbs" ,
      ".mng":"video/x-mng" ,
      ".mny":"application/x-msmoney" ,
      ".moc":"application/x-mocha" ,
      ".mocha":"application/x-mocha" ,
      ".mod":"audio/x-mod" ,
      ".mof":"application/x-yumekara" ,
      ".mol":"chemical/x-mdl-molfile" ,
      ".mop":"chemical/x-mopac-input" ,
      ".mov":"video/quicktime" ,
      ".movie":"video/x-sgi-movie" ,
      ".mp2":"video/mpeg" ,
      ".mp3":"audio/mpeg" ,
      ".mp4":"video/mp4" ,
      ".mpa":"video/mpeg" ,
      ".mpc":"application/vnd.mpohun.certificate" ,
      ".mpe":"video/mpeg" ,
      ".mpeg":"video/mpeg" ,
      ".mpg":"video/mpeg" ,
      ".mpg4":"video/mp4" ,
      ".mpga":"audio/mpeg" ,
      ".mpn":"application/vnd.mophun.application" ,
      ".mpp":"application/vnd.ms-project" ,
      ".mps":"application/x-mapserver" ,
      ".mpv2":"video/mpeg" ,
      ".mrl":"text/x-mrml" ,
      ".mrm":"application/x-mrm" ,
      ".ms":"application/x-troff-ms" ,
      ".msg":"application/vnd.ms-outlook" ,
      ".mts":"application/metastream" ,
      ".mtx":"application/metastream" ,
      ".mtz":"application/metastream" ,
      ".mvb":"application/x-msmediaview" ,
      ".mzv":"application/metastream" ,
      ".nar":"application/zip" ,
      ".nbmp":"image/nbmp" ,
      ".nc":"application/x-netcdf" ,
      ".ndb":"x-lml/x-ndb" ,
      ".ndwn":"application/ndwn" ,
      ".nif":"application/x-nif" ,
      ".nmz":"application/x-scream" ,
      ".nokia-op-logo":"image/vnd.nok-oplogo-color" ,
      ".npx":"application/x-netfpx" ,
      ".nsnd":"audio/nsnd" ,
      ".nva":"application/x-neva1" ,
      ".nws":"message/rfc822" ,
      ".oda":"application/oda" ,
      ".ogg":"audio/ogg" ,
      ".oom":"application/x-AtlasMate-Plugin" ,
      ".p10":"application/pkcs10" ,
      ".p12":"application/x-pkcs12" ,
      ".p7b":"application/x-pkcs7-certificates" ,
      ".p7c":"application/x-pkcs7-mime" ,
      ".p7m":"application/x-pkcs7-mime" ,
      ".p7r":"application/x-pkcs7-certreqresp" ,
      ".p7s":"application/x-pkcs7-signature" ,
      ".pac":"audio/x-pac" ,
      ".pae":"audio/x-epac" ,
      ".pan":"application/x-pan" ,
      ".pbm":"image/x-portable-bitmap" ,
      ".pcx":"image/x-pcx" ,
      ".pda":"image/x-pda" ,
      ".pdb":"chemical/x-pdb" ,
      ".pdf":"application/pdf" ,
      ".pfr":"application/font-tdpfr" ,
      ".pfx":"application/x-pkcs12" ,
      ".pgm":"image/x-portable-graymap" ,
      ".pict":"image/x-pict" ,
      ".pko":"application/ynd.ms-pkipko" ,
      ".pm":"application/x-perl" ,
      ".pma":"application/x-perfmon" ,
      ".pmc":"application/x-perfmon" ,
      ".pmd":"application/x-pmd" ,
      ".pml":"application/x-perfmon" ,
      ".pmr":"application/x-perfmon" ,
      ".pmw":"application/x-perfmon" ,
      ".png":"image/png" ,
      ".pnm":"image/x-portable-anymap" ,
      ".pnz":"image/png" ,
      ".pot,":"application/vnd.ms-powerpoint" ,
      ".ppm":"image/x-portable-pixmap" ,
      ".pps":"application/vnd.ms-powerpoint" ,
      ".ppt":"application/vnd.ms-powerpoint" ,
      ".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation" ,
      ".pqf":"application/x-cprplayer" ,
      ".pqi":"application/cprplayer" ,
      ".prc":"application/x-prc" ,
      ".prf":"application/pics-rules" ,
      ".prop":"text/plain" ,
      ".proxy":"application/x-ns-proxy-autoconfig" ,
      ".ps":"application/postscript" ,
      ".ptlk":"application/listenup" ,
      ".pub":"application/x-mspublisher" ,
      ".pvx":"video/x-pv-pvx" ,
      ".qcp":"audio/vnd.qcelp" ,
      ".qt":"video/quicktime" ,
      ".qti":"image/x-quicktime" ,
      ".qtif":"image/x-quicktime" ,
      ".r3t":"text/vnd.rn-realtext3d" ,
      ".ra":"audio/x-pn-realaudio" ,
      ".ram":"audio/x-pn-realaudio" ,
      ".rar":"application/octet-stream" ,
      ".ras":"image/x-cmu-raster" ,
      ".rc":"text/plain" ,
      ".rdf":"application/rdf+xml" ,
      ".rf":"image/vnd.rn-realflash" ,
      ".rgb":"image/x-rgb" ,
      ".rlf":"application/x-richlink" ,
      ".rm":"audio/x-pn-realaudio" ,
      ".rmf":"audio/x-rmf" ,
      ".rmi":"audio/mid" ,
      ".rmm":"audio/x-pn-realaudio" ,
      ".rmvb":"audio/x-pn-realaudio" ,
      ".rnx":"application/vnd.rn-realplayer" ,
      ".roff":"application/x-troff" ,
      ".rp":"image/vnd.rn-realpix" ,
      ".rpm":"audio/x-pn-realaudio-plugin" ,
      ".rt":"text/vnd.rn-realtext" ,
      ".rte":"x-lml/x-gps" ,
      ".rtf":"application/rtf" ,
      ".rtg":"application/metastream" ,
      ".rtx":"text/richtext" ,
      ".rv":"video/vnd.rn-realvideo" ,
      ".rwc":"application/x-rogerwilco" ,
      ".s3m":"audio/x-mod" ,
      ".s3z":"audio/x-mod" ,
      ".sca":"application/x-supercard" ,
      ".scd":"application/x-msschedule" ,
      ".sct":"text/scriptlet" ,
      ".sdf":"application/e-score" ,
      ".sea":"application/x-stuffit" ,
      ".setpay":"application/set-payment-initiation" ,
      ".setreg":"application/set-registration-initiation" ,
      ".sgm":"text/x-sgml" ,
      ".sgml":"text/x-sgml" ,
      ".sh":"application/x-sh" ,
      ".shar":"application/x-shar" ,
      ".shtml":"magnus-internal/parsed-html" ,
      ".shw":"application/presentations" ,
      ".si6":"image/si6" ,
      ".si7":"image/vnd.stiwap.sis" ,
      ".si9":"image/vnd.lgtwap.sis" ,
      ".sis":"application/vnd.symbian.install" ,
      ".sit":"application/x-stuffit" ,
      ".skd":"application/x-Koan" ,
      ".skm":"application/x-Koan" ,
      ".skp":"application/x-Koan" ,
      ".skt":"application/x-Koan" ,
      ".slc":"application/x-salsa" ,
      ".smd":"audio/x-smd" ,
      ".smi":"application/smil" ,
      ".smil":"application/smil" ,
      ".smp":"application/studiom" ,
      ".smz":"audio/x-smd" ,
      ".snd":"audio/basic" ,
      ".spc":"application/x-pkcs7-certificates" ,
      ".spl":"application/futuresplash" ,
      ".spr":"application/x-sprite" ,
      ".sprite":"application/x-sprite" ,
      ".sdp":"application/sdp" ,
      ".spt":"application/x-spt" ,
      ".src":"application/x-wais-source" ,
      ".sst":"application/vnd.ms-pkicertstore" ,
      ".stk":"application/hyperstudio" ,
      ".stl":"application/vnd.ms-pkistl" ,
      ".stm":"text/html" ,
      ".svg":"image/svg+xml" ,
      ".sv4cpio":"application/x-sv4cpio" ,
      ".sv4crc":"application/x-sv4crc" ,
      ".svf":"image/vnd" ,
      ".svg":"image/svg+xml" ,
      ".svh":"image/svh" ,
      ".svr":"x-world/x-svr" ,
      ".swf":"application/x-shockwave-flash" ,
      ".swfl":"application/x-shockwave-flash" ,
      ".t":"application/x-troff" ,
      ".tad":"application/octet-stream" ,
      ".talk":"text/x-speech" ,
      ".tar":"application/x-tar" ,
      ".taz":"application/x-tar" ,
      ".tbp":"application/x-timbuktu" ,
      ".tbt":"application/x-timbuktu" ,
      ".tcl":"application/x-tcl" ,
      ".tex":"application/x-tex" ,
      ".texi":"application/x-texinfo" ,
      ".texinfo":"application/x-texinfo" ,
      ".tgz":"application/x-compressed" ,
      ".thm":"application/vnd.eri.thm" ,
      ".tif":"image/tiff" ,
      ".tiff":"image/tiff" ,
      ".tki":"application/x-tkined" ,
      ".tkined":"application/x-tkined" ,
      ".toc":"application/toc" ,
      ".toy":"image/toy" ,
      ".tr":"application/x-troff" ,
      ".trk":"x-lml/x-gps" ,
      ".trm":"application/x-msterminal" ,
      ".tsi":"audio/tsplayer" ,
      ".tsp":"application/dsptype" ,
      ".tsv":"text/tab-separated-values" ,
      ".ttf":"application/octet-stream" ,
      ".ttz":"application/t-time" ,
      ".txt":"text/plain" ,
      ".uls":"text/iuls" ,
      ".ult":"audio/x-mod" ,
      ".ustar":"application/x-ustar" ,
      ".uu":"application/x-uuencode" ,
      ".uue":"application/x-uuencode" ,
      ".vcd":"application/x-cdlink" ,
      ".vcf":"text/x-vcard" ,
      ".vdo":"video/vdo" ,
      ".vib":"audio/vib" ,
      ".viv":"video/vivo" ,
      ".vivo":"video/vivo" ,
      ".vmd":"application/vocaltec-media-desc" ,
      ".vmf":"application/vocaltec-media-file" ,
      ".vmi":"application/x-dreamcast-vms-info" ,
      ".vms":"application/x-dreamcast-vms" ,
      ".vox":"audio/voxware" ,
      ".vqe":"audio/x-twinvq-plugin" ,
      ".vqf":"audio/x-twinvq" ,
      ".vql":"audio/x-twinvq" ,
      ".vre":"x-world/x-vream" ,
      ".vrml":"x-world/x-vrml" ,
      ".vrt":"x-world/x-vrt" ,
      ".vrw":"x-world/x-vream" ,
      ".vts":"workbook/formulaone" ,
      ".wav":"audio/x-wav" ,
      ".wax":"audio/x-ms-wax" ,
      ".wbmp":"image/vnd.wap.wbmp" ,
      ".wcm":"application/vnd.ms-works" ,
      ".wdb":"application/vnd.ms-works" ,
      ".web":"application/vnd.xara" ,
      ".wi":"image/wavelet" ,
      ".wis":"application/x-InstallShield" ,
      ".wks":"application/vnd.ms-works" ,
      ".wm":"video/x-ms-wm" ,
      ".wma":"audio/x-ms-wma" ,
      ".wmd":"application/x-ms-wmd" ,
      ".wmf":"application/x-msmetafile" ,
      ".wml":"text/vnd.wap.wml" ,
      ".wmlc":"application/vnd.wap.wmlc" ,
      ".wmls":"text/vnd.wap.wmlscript" ,
      ".wmlsc":"application/vnd.wap.wmlscriptc" ,
      ".wmlscript":"text/vnd.wap.wmlscript" ,
      ".wmv":"audio/x-ms-wmv" ,
      ".wmx":"video/x-ms-wmx" ,
      ".wmz":"application/x-ms-wmz" ,
      ".wpng":"image/x-up-wpng" ,
      ".wps":"application/vnd.ms-works" ,
      ".wpt":"x-lml/x-gps" ,
      ".wri":"application/x-mswrite" ,
      ".wrl":"x-world/x-vrml" ,
      ".wrz":"x-world/x-vrml" ,
      ".ws":"text/vnd.wap.wmlscript" ,
      ".wsc":"application/vnd.wap.wmlscriptc" ,
      ".wv":"video/wavelet" ,
      ".wvx":"video/x-ms-wvx" ,
      ".wxl":"application/x-wxl" ,
      ".x-gzip":"application/x-gzip" ,
      ".xaf":"x-world/x-vrml" ,
      ".xar":"application/vnd.xara" ,
      ".xbm":"image/x-xbitmap" ,
      ".xdm":"application/x-xdma" ,
      ".xdma":"application/x-xdma" ,
      ".xdw":"application/vnd.fujixerox.docuworks" ,
      ".xht":"application/xhtml+xml" ,
      ".xhtm":"application/xhtml+xml" ,
      ".xhtml":"application/xhtml+xml" ,
      ".xla":"application/vnd.ms-excel" ,
      ".xlc":"application/vnd.ms-excel" ,
      ".xll":"application/x-excel" ,
      ".xlm":"application/vnd.ms-excel" ,
      ".xls":"application/vnd.ms-excel" ,
      ".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,
      ".xlt":"application/vnd.ms-excel" ,
      ".xlw":"application/vnd.ms-excel" ,
      ".xm":"audio/x-mod" ,
      ".xml":"text/plain",
      ".xml":"application/xml",
      ".xmz":"audio/x-mod" ,
      ".xof":"x-world/x-vrml" ,
      ".xpi":"application/x-xpinstall" ,
      ".xpm":"image/x-xpixmap" ,
      ".xsit":"text/xml" ,
      ".xsl":"text/xml" ,
      ".xul":"text/xul" ,
      ".xwd":"image/x-xwindowdump" ,
      ".xyz":"chemical/x-pdb" ,
      ".yz1":"application/x-yz1" ,
      ".z":"application/x-compress" ,
      ".zac":"application/x-zaurus-zac" ,
      ".zip":"application/zip" ,
      ".json":"application/json"
    }

     静态服务器改版:

    /**
     * Created by Danny on 2015/9/20 9:34.
     */
    var http = require("http");
    var fs = require("fs");
    var url = require("url");
    var path = require("path");
    
    var server = http.createServer(function(req,res){
        //这里如果不用req.url来if判断,那么用户不管输入什么网址,
        //做的事情都一样啊
        //得到地址
        var pathname = url.parse(req.url).pathname;
        //判断此时用户输入的地址是文件夹地址还是文件地址
        //如果是文件夹地址,那么自动请求这个文件夹中的index.html
        if(pathname.indexOf(".") == -1){
            pathname += "/index.html";
        }
        //输入的网址是127.0.0.1/images/logo.png
        //实际请求的是./static/images/logo.png
        //normalize把双斜杠转变成单斜杠
        var fileURL = "./" + path.normalize("./static/" + pathname);
        //得到拓展名
        var extname = path.extname(pathname);
    
        //把文件读出来
        fs.readFile(fileURL,function(err,data){
            //读完之后做的事情
            if(err){
                //文件不存在
                res.writeHead(404,{"Content-Type":"text/html;charset=UTF8"})
                res.end("404,页面没有找到");
            }
            //读完之后做的事情
            getMime(extname,function(mime){//异步操作最好写到回调函数里面
                res.writeHead(200,{"Content-Type":mime})
                res.end(data);
            });
        });
    });
    
    server.listen(80,"127.0.0.1");
    
    function getMime(extname,callback){
        //读取mime.json文件,得到JSON,根据extname key ,返回对应的value
        //读取文件
        fs.readFile("./mime.json",function(err,data){//异步
            if(err){
                throw Error("找不到mime.json文件!");
                return;
            }
            //转成JSON
            var mimeJSON = JSON.parse(data);
            var mime =  mimeJSON[extname]  || "text/plain";
            //执行回调函数,mime类型字符串,就是它的参数
            callback(mime);
        });
    }
  • 相关阅读:
    开源一些C#不常用知识(附上DEMO)
    开源:C# 代码自动生成工具,支持站点前后台
    Xposed 集成 Android 6.0.1环境中,总结
    Android 视频通信,低延时解决方案
    Android studio,第一个生成,调用成功的jni(说多了都是泪)
    C#之文件缓存
    JavaScript 基本常识
    排序算法
    LeetCode:字符串转换整数 (atoi)
    LeetCode:判断回文数
  • 原文地址:https://www.cnblogs.com/yaowen/p/7029136.html
Copyright © 2011-2022 走看看