Spring Boot の ajax +zTree 遍历和预览本地文件路径和内容(提供下载)

1.创建springboot项目

目前经测试,可预览  .txt,.xml,. log,.sql,.java 文本文件,图片文件,.wav,.mp3音频文件,.mp4视频文件, pdf文件
      可下载   .txt,.xml,. log,.sql,.java 文本文件,图片文件,.wav, pdf文件, .docx文档文件, .xlsx文件

具体步骤不写,下面是配置与代码

1.1 build.gradle

buildscript {
	ext {
		springBootVersion = '2.0.0.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8


repositories {
	mavenCentral()
}

dependencies {
	compile('org.springframework.boot:spring-boot-starter-thymeleaf')
	compile('org.springframework.boot:spring-boot-starter-web')
	compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
	compile('com.alibaba:druid:1.1.9')
	compile('javax.servlet:javax.servlet-api:4.0.0')
	runtime('mysql:mysql-connector-java')
	compile('org.springframework.boot:spring-boot-starter-tomcat')
	compile('org.springframework.boot:spring-boot-devtools')

	testCompile('org.springframework.boot:spring-boot-starter-test')
}

1.2 application.properties

server.address=10.130.1.131
server.port=8080
server.servlet.path=/myspecial

#thymeleaf
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

1.3 MVCConfigure

@Configuration
public class MyMVCconfigCFG implements WebMvcConfigurer {
    //private final static String URI_ROOT = "/";
    private final static String URI_CORS_STARTWITH = "/**";

    /*添加可跨域访问*/
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping(URI_CORS_STARTWITH);
    }

    /**/
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
       // registry.addViewController(URI_CORS_STARTWITH +URI_ROOT +URI_VIEWCONTROLLER_REDIRECT).setViewName(URI_VIEWCONTROLLER_REDIRECT);
       // registry.addViewController("/fileupload").setViewName("1/fileupload");
       // registry.addViewController("/bookTurning").setViewName("2/bookTurning");
        registry.addViewController("/fileCatalog").setViewName("3/fileCatalog");
    }
}


1.4 HTML

<!DOCTYPE html>
<html lang="zh_CN">
<head>
    <meta charset="UTF-8">
    <title>文件目录</title>
    <link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css" />
    <!--使用metro风格-->
    <link rel="stylesheet" href="static/custom/fileCatalog/css/metroStyle/metroStyle.css" />

    <script type="text/javascript" src="static/jquery/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="static/custom/fileCatalog/js/jquery.ztree.all.min.js"></script>
    <script type="text/javascript" src="static/custom/fileCatalog/js/BASE64AString.js"></script>
    <script type="text/javascript" src="static/custom/fileCatalog/js/MIMEdeal.js"></script>
    <script type="text/javascript" src="static/custom/fileCatalog/fileCatalog.js"></script>
</head>
<body>
<div>
    <!-- Nav tabs -->
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
    </ul>
    <!-- Tab panes -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane active" id="home">
            <div class="row">
                <div class="col col-md-4">
                    <ul class="ztree" id="menu"></ul>
                </div>
                <div class="col col-md-8">
                    <div id="namePathUL"></div>
                    <div id="previewUL"></div>
                </div>
            </div>
        </div>
    </div>
</div>

</body>
</html>


1.5 JS

BASE64AString.js:

/**
 * Created by wangbiao-019 on 2018/4/27.
 */
var Base64 = {

    // private property
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode: function(input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode: function(input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            } else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            } else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            } else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}
MIMEdeal.js:
/**
 * Created by wangbiao-019 on 2018/4/27.
 */
var _IMAGE = "image";var _APPLICATION = "application";var _VIDE0 = "video";
var _TEXT = "text";var _MESSAGE = "message";var _AUDIO = "audio"; var _XWORD = "x-world";

var MYMIME_V = {};
function DEALFILE_V(fileName){
    if(fileName && fileName.length > 0){
        var ssuffer = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
        if(COMMENMIME.hasOwnProperty(ssuffer)){
            MYMIME_V.BASE64_PREFFIX_V = "data:" + COMMENMIME[ssuffer] + ";base64,";
            MYMIME_V.MIME_HEADER_V = COMMENMIME[ssuffer];
            MYMIME_V.MIME_TYPE_V = COMMENMIME[ssuffer].substring(0, COMMENMIME[ssuffer].indexOf("/"));
        }else{
            MYMIME_V.BASE64_PREFFIX_V = "data:application/octet-stream;base64,";
            MYMIME_V.MIME_HEADER_V = "application/octet-stream";
            MYMIME_V.MIME_TYPE_V = "application";
        }
        MYMIME_V.FILE_NAME_V = fileName;
        return MYMIME_V;
    }
}

var MYMIME_2V = [];
//这个方法没调用
function DEALFILE_2V(fileName){
    if(fileName && fileName.length > 0) {
        var ssuffer = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
        if (COMMENMIME.hasOwnProperty(ssuffer) && COMMENMIME[ssuffer].indexOf(_AUDIO) != -1) { //
            var i = 0;

            for (var key in COMMENMIME) {
                var o = {};
                if (COMMENMIME[key].indexOf(_AUDIO) != -1) {
                    o.BASE64_PREFFIX_2V = "data:" + COMMENMIME[key] + ";base64,";
                    o.MIME_HEADER_2V = COMMENMIME[key];
                    o.MIME_TYPE_2V = COMMENMIME[key].substring(0, COMMENMIME[key].indexOf("/"));
                    o.MIME_FILE_NAME_2V = fileName;
                    MYMIME_2V[i ++] = o;
                }
            }
        } else if (COMMENMIME.hasOwnProperty(ssuffer) && COMMENMIME[ssuffer].indexOf(_VIDE0) != -1) { //
            var i = 0;

            for (var key in COMMENMIME) {
                var o = {};
                if (COMMENMIME[key].indexOf(_VIDE0) != -1) {
                    o.BASE64_PREFFIX_2V = "data:" + COMMENMIME[key] + ";base64,";
                    o.MIME_HEADER_2V = COMMENMIME[key];
                    o.MIME_TYPE_2V = COMMENMIME[key].substring(0, COMMENMIME[key].indexOf("/"));
                    o.MIME_FILE_NAME_2V = fileName;
                    MYMIME_2V[i ++] = o;
                }
            }
        } else {
            var o = {};
            o.BASE64_PREFFIX_2V = "data:application/octet-stream;base64,";
            o.MIME_HEADER_2V = "application/octet-stream";
            o.MIME_TYPE_2V = "application";
            o.MIME_FILE_NAME_2V = fileName;
            MYMIME_2V[0] = o;
        }
        return MYMIME_2V;
    }
}



var COMMENMIME = {
    ".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" ,
    ".json":"application/json" ,
    ".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" ,
    ".sql":"text/sql" ,
    ".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",
    ".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" ,
}

fileCatalog.js:

/**
 * Created by wangbiao-019 on 2018/4/17.
 */

var setting = {
    view: {
        //addHoverDom: addHoverDom,
        //removeHoverDom: removeHoverDom,
        selectedMulti: false
    },
    check: {
        enable: true
    },
    data: {
        simpleData: {
            enable: true
        }
    },
    edit: {
        enable: false
    },
    callback: {
        onClick: zTreeOnClick
    }
};

//点击事件
var maxId = 0;
function zTreeOnClick(e, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj(treeId);
    var nodes = zTree.getSelectedNodes();
    var namePath = concatParentsPath(treeNode);

    if (treeNode.name.indexOf("\\") == -1) {
        pleaseFile('fileCatalog/fileCatalogv', {'filePath': namePath},
            true, '#namePathUL', '#previewUL', {'filePath': namePath});
    } else {
        pleasePath('fileCatalog/fileCatalogs', {
                'dirPath': namePath,
                'id': treeNode.id,
                'maxId': maxId
            }, treeId, treeNode,
            false, '#namePathUL', '#previewUL', {'filePath': namePath});
    }
}


function initZTree(id, setting, zNodes) {
    $.fn.zTree.init($(id), setting, zNodes);    //构造zTree
}

$(function () {
    pleaseInit("fileCatalog/fileCatalogInit", "#menu", setting); //请求,给zNodes赋值
});

function pleaseInit(url, id, setting) {
    $.ajax({
        url: url,
        type: "GET",
        dataType: "json",
        success: function (data) {
            initZTree(id, setting, data);
            maxId += data.length;
        },
        error: function (error) {
            console.info(error);
        }
    });
}
function pleasePath(url, udata, treeId, treeNode, flag, pdivId, cdivId, param) {
    $.ajax({
        url: url,
        type: "GET",
        data: udata,
        dataType: "json",
        success: function (data) {
            if (data) {
                previewLeft(treeId, treeNode, data);

                previewRight(flag, pdivId, cdivId, param, data);
            }
        },
        error: function (error) {
            alert(error);
        }
    });
}

function pleaseFile(url, udata, flag, pdivId, cdivId, param) {
    $.ajax({
        url: url,
        type: "GET",
        data: udata,
        //dataType: "json",
        success: function (data) {
            if (data) {
                if (data.code && data.code == 'bad') {
                    msg(1, data.message);
                } else {
                    //console.info(data);
                    //priviewLeft();

                    previewRight(flag, pdivId, cdivId, param, data);
                }
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.info(errorThrown);
        }
    });
}


function concatParentsPath(currNode) {
    if (currNode == null) {
        return "";
    } else if (!currNode.isParent) {
        return concatParentsPath(currNode.getParentNode()) + "\\" + currNode.name;
    } else if (currNode.getParentNode() != null && currNode.getParentNode().getParentNode() == null && currNode.isParent) {
        return concatParentsPath(currNode.getParentNode()) + currNode.name.substring(currNode.name.lastIndexOf("\\") + 1);
    } else {
        return concatParentsPath(currNode.getParentNode()) + currNode.name;
    }
}

//树形结构
function previewLeft(treeId, treeNode, treeData) {
    var zTree = $.fn.zTree.getZTreeObj(treeId);
    //删除以前的
    zTree.removeChildNodes(treeNode);
    //添加新的
    for (var cnode in treeData) {
        zTree.addNodes(treeNode, {
            id: treeData[cnode].id,
            pId: treeData[cnode].pId,
            name: treeData[cnode].name,
            isParent: treeData[cnode].isParent
        });
    }
    maxId += treeData.length;
}
//内容=(名称+具体内容)
function previewRight(flag, pdivId, cdivId, param, dotos) {
    $(pdivId).empty();
    var phtml = param.filePath;
    $(pdivId).append('<p>' + phtml + '</p>');

    if (flag) {

        $(cdivId).empty();
        previewData(phtml, pdivId, cdivId, dotos);
        //var chtml = '<span class="glyphicon glyphicon-lock"></span>';
        //$(cdivId).append(chtml);
    } else {
        $(cdivId).empty();
        $(cdivId).append('<span style="color:green;">/路径/</span>');
    }
}

//
function previewData(filePath, pdivId, cdivId, dotos) {
    var download;
    var tag;
    if (filePath) {
        var mime = DEALFILE_V(filePath.substring(filePath.lastIndexOf("\\") + 1));

        if (mime && mime.MIME_TYPE_V == _IMAGE){ // 图片
            //下载
            download = '  <a href="' + mime.BASE64_PREFFIX_V + dotos + '" download="'+ mime.FILE_NAME_V + '"><span class="glyphicon glyphicon-book"></span>下载</a>';
            $(pdivId).children('p:last-child').append(download);
            //显示
            tag = '<img src="' + mime.BASE64_PREFFIX_V + dotos + '" alt="" class="img-rounded"/>'
            $(cdivId).append(tag);
        } else if (mime && mime.MIME_TYPE_V == _TEXT) {
            //replace用正则则会替换全部匹配的字符串,不用正则则会替换第一个匹配的字符串
            //将后端返回的字符串</br> 变成文本换行。将<a>...</a>换成'',将<换成< ,将>换成>
            download = '  <a href="' + mime.BASE64_PREFFIX_V + Base64.encode(dotos.replace(/<\/br>/g, '\r\n').replace(/<a.*?>.*?<\/a>(\/s)*/g, '').replace(/</g,'<').replace(/>/g, '>')) +
                '" download="' +mime.FILE_NAME_V+'"><span class="glyphicon glyphicon-book"></span>下载</a>';
            $(pdivId).children('p:last-child').append(download);

            tag = '<p>' + dotos + '</p>';
            $(cdivId).append(tag);
        } else if (mime && mime.MIME_TYPE_V == _VIDE0) { //视频
            download = '  <a href="' + mime.BASE64_PREFFIX_V + dotos + '" download="' + mime.FILE_NAME_V + '"><span class="glyphicon glyphicon-book"></span>下载</a>';
            $(pdivId).children('p:last-child').append(download);

            tag = videoContructByBase64_M1(dotos);
            $(cdivId).append(tag);
        } else if ( mime && mime.MIME_TYPE_V == _AUDIO) {
            download = '  <a href="' + mime.BASE64_PREFFIX_V + dotos + '" download="' + mime.FILE_NAME_V + '"><span class="glyphicon glyphicon-book"></span>下载l</a>';
            download += '  <a href="data:audio/ogg;base64,' + dotos + '" download="' + mime.FILE_NAME_V + '"><span class="glyphicon glyphicon-book"></span>下载2</a>';
            download += '  <a href="data:audio/wav;base64,' + dotos + '" download="' + mime.FILE_NAME_V + '"><span class="glyphicon glyphicon-book"></span>下载3</a>';
            $(pdivId).children('p:last-child').append(download);

            tag = audioContructByBase64_M1(dotos);
            $(cdivId).append(tag);
        } else if(mime && mime.MIME_HEADER_V.indexOf("pdf") != -1){// pdf
            download = '  <a href="' + mime.BASE64_PREFFIX_V + dotos + '" download="'+ mime.FILE_NAME_V +'"><span class="glyphicon glyphicon-book"></span>下载</a>';
            $(pdivId).children('p:last-child').append(download);
           //
            tag = '<embed width="100%" height="2600" src="'+ mime.BASE64_PREFFIX_V + dotos +'"> </embed> ';
            $(cdivId).append(tag);
        } else{ //
            //下载
            tag = '  <a href="' + mime.BASE64_PREFFIX_V + dotos + '" download="'+ mime.FILE_NAME_V +'"><span class="glyphicon glyphicon-book"></span>下载</a>';
            $(pdivId).children('p:last-child').append(tag);

            $(cdivId).append('<p style="color: red;">/文件无法预览,请先下载/</p>');
        }
    }
}

//视频构造
function videoContructByBase64_M1(BASE64data){
    return '<video width="320" height="240" controls="controls" poster="static/custom/fileCatalog/img/IMG_0472.JPG">' +
                '<source src="'+'data:video/mp4;base64,'+BASE64data+'" type="video/mp4" />' +
                '<source src="'+'data:video/webm;base64,'+BASE64data+'" type="video/webm" />' +
                '<source src="'+'data:video/ogg;base64,'+BASE64data+'" type="video/ogg" />' +
                '您的浏览器并不支持Video' +
            '</video>';
}
//音频构造
function audioContructByBase64_M1(BASE64data){
    return '<audio controls="controls" height="100" width="100">' +
        '<source src="'+'data:audio/ogg;base64,'+BASE64data+'" type="audio/ogg; codecs=opus" />' +
        '<source src="'+'data:audio/ogg;base64,'+BASE64data+'" type="audio/ogg; codecs=vorbis" />' +
        '<source src="'+'data:audio/mp3;base64,'+BASE64data+'" type="audio/mpeg" />' +
        '您的浏览器并不支持Audio' +
        '</audio>';
}

/*function audioContructByBase64_M2(BASE64data){
}*/

//too1
String.prototype.endsWith = function (endStr) {
    var d = this.length - endStr.length;
    return (d >= 0 && this.lastIndexOf(endStr) == d)
}
String.prototype.replaceAll = function(s1,s2){
    return this.replace(new RegExp(s1,"gm"),s2);
}

1.6 CONTROLLER

package com.example.demo.on.controller;

import com.example.demo.common.entity.FileNode;
import com.example.demo.common.util.MimeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import sun.misc.BASE64Encoder;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by wangbiao-019 on 2018/4/17.
 */
@Controller
@RequestMapping("/fileCatalog")
public class FileCatalogController {
    private static Logger logger = LoggerFactory.getLogger(FileCatalogController.class);
    private MimeUtil mimeUtil = MimeUtil.getInstance();

    @GetMapping("/fileCatalogInit")
    @ResponseBody
    public List<FileNode> getFileCatalogInit() {
        logger.info("[初始化]");
        List<FileNode> nodes = new ArrayList<FileNode>();
        initZtree(nodes);
        return nodes;
    }

    @GetMapping("/fileCatalogs")
    @ResponseBody
    public List<FileNode> getFileCatalogAjax(@RequestParam(value = "dirPath", required = false) String dirPath,
                                             @RequestParam(value = "id", required = false) int id,
                                             @RequestParam(value = "maxId", required = false) int maxId) {
        logger.info("[获取路径]");
        logger.info(dirPath);
        List<FileNode> nodes = new ArrayList<FileNode>();
        ajaxZtree(nodes, dirPath, id, maxId);
        return nodes;
    }

    @GetMapping("/fileCatalogv")
    public Map<String, Object> getFileCatalogView(HttpServletResponse hsr,
            @RequestParam(value = "filePath", required = false) String filePath ) throws IOException {
        logger.info("[获取资源]");
        Map<String, Object> rmap = new HashMap<String, Object>();
        logger.info(filePath);
        if (filePath == null) {
            rmap.put("code", "bad");
            rmap.put("msg", "文件路径有误");
            return rmap;
        } else {
            File file = new File(filePath);
            if (!file.exists()) {
                rmap.put("code", "bad");
                rmap.put("msg", "文件不存在");
                return rmap;
            } else {
                if (file.isFile() && !file.isHidden()) { //隐藏文件不要
                    if(file.getName().endsWith(".txt") ||
                        file.getName().endsWith(".log") ||
                        file.getName().endsWith(".sql") ||
                        file.getName().endsWith(".java") ||
                        file.getName().endsWith(".ini") ||
                        file.getName().endsWith(".conf") ||
                        file.getName().endsWith(".xml") ||
                        file.getName().endsWith(".css") ||
                        //file.getName().endsWith(".js") ||
                        file.getName().endsWith(".html") ||
                        file.getName().endsWith(".jsp") ||
                        file.getName().endsWith(".dtd") )
                    {
                        txtResponse(file, hsr);
                    }else if(file.getName().toLowerCase().endsWith(".png") ||
                            file.getName().toLowerCase().endsWith(".jpg") ||
                            file.getName().toLowerCase().endsWith(".bmp") ||
                            file.getName().toLowerCase().endsWith(".jepg") ||
                            file.getName().toLowerCase().endsWith(".gif") ){
                        imgResponse(file, hsr);

                    }else if(file.getName().toLowerCase().endsWith(".pdf")){
                        pdfResponse(file, hsr);
                    }else if(file.getName().toLowerCase().endsWith(".bat") || //可执行文件不要下载
                            file.getName().toLowerCase().endsWith(".com") ||
                            file.getName().toLowerCase().endsWith(".exe") ||
                            file.getName().toLowerCase().endsWith(".pif") ||
                            file.getName().toLowerCase().endsWith(".msi")){
                        rmap.put("code", "bad");
                        rmap.put("msg", "该文件不可访问");
                        return rmap;
                    }else{
                        otherResponse(file, hsr);
                    }

                }
            }
            return null;
        }
    }


    //1.初始化zTree
    private void initZtree(List<FileNode> nodes) {
        File[] rootFiles = File.listRoots();
        for (int i = 0; i < rootFiles.length; i++) {
            FileNode fn = new FileNode();
            fn.setId(i + 1);
            fn.setpId(0);
            fn.setIsParent(true);
            fn.setFileCount(rootFiles[i].list() != null ? rootFiles[i].list().length : 0);
            fn.setName(rootFiles[i].getAbsolutePath());
            nodes.add(fn);
        }
    }

    //2.ajax请求
    private void ajaxZtree(List<FileNode> nodes, String dirPath, int id, int maxId) {
        if (dirPath == null || "".equals(dirPath)) {
            return;
        } else {
            File file = new File(dirPath);
            if (file.exists()) {
                File[] files = file.listFiles();
                if (files != null && files.length > 0) {
                    FileNode fn;
                    for (int i = 0; i < files.length; i++) {
                        fn = new FileNode();
                        if (files[i].isDirectory()) {
                            fn.setFileCount(files[i].list() != null ? files[i].list().length : 0);
                            fn.setName(files[i].getAbsolutePath().substring(files[i].getAbsolutePath().lastIndexOf(File.separator)));
                            fn.setIsParent(true);
                        } else {
                            fn.setName(files[i].getName());
                        }
                        fn.setId(++ maxId);
                        fn.setpId(id);
                        nodes.add(fn);
                    }
                }
            } else {
                return;
            }
        }
    }

    //3.1
    private void txtResponse(File file, HttpServletResponse hsr) {
        logger.info("[获取文本]");
        responseSET(hsr, file.getName(), file);
        //responseSET(hsr, file.getName(), file);
        //hsr.setCharacterEncoding("UTF-8");
        //hsr.setHeader("content-type", "text/plain;charset=UTF-8");

        //字符写入流+写出流组合
        FileReader fr = null;
        BufferedReader br = null;
        BufferedWriter bw = null;
        Writer w = null;
        try {
            w = hsr.getWriter();
            bw = new BufferedWriter(w);
            fr = new FileReader(file);
            br = new BufferedReader(fr);

            int line = 1;
            String str = null;
            while ((str = br.readLine()) != null) {
                bw.append("<a style=\"color:green;\">" + (line++) + "</a>  " +      //行号
                        str.replaceAll("<", "<")                 //读xml文件
                            .replaceAll(">", ">") +
                        "</br>");                                                      //换行(用于前端显示)
                //bw.newLine();
                bw.flush();
            }
            logger.info("[字符流flush成功]");
        } catch (FileNotFoundException fnfe) {
            fnfe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if (br != null) br.close();
                if (bw != null) bw.close();
                if (w != null) w.close();
                if (fr != null) fr.close();
                logger.info("[字符流colse成功]");
            } catch (IOException ioe) {
                logger.info("fuck");
                ioe.printStackTrace();
            }
        }
    }

    //3.2 图片
    private void imgResponse(File file, HttpServletResponse hsr) {
        logger.info("[获取图片]");
        responseSET(hsr, file.getName(), file);
        //hsr.setHeader("content-type", "img/*");
        //StringBuffer sb = new StringBuffer();
        //图片写入流+写出流组合
        BufferedInputStream bis = null;
        FileInputStream fis = null;
        BufferedOutputStream bos = null;
        OutputStream os = null;
        try {
            os = hsr.getOutputStream();
            bos = new BufferedOutputStream(os);
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);

            BASE64Encoder base64encoder = new BASE64Encoder();
            //Base64 works on 3 bytes at a time, so you can read your file in batches of "multiple of 3" bytes,
            byte[] bt = new byte[3 * 512];
            int len = 0;
            while ((len = bis.read(bt)) != -1) {
                //sb.append(base64encoder.encode(bt));
                bos.write(base64encoder.encode(bt).getBytes());
                bos.flush();
            }
            //bos.write(sb.toString().getBytes() );

            logger.info("[图片流flush成功]");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bis != null) bis.close();
                if (bos != null) bos.close();
                if (os != null) os.close();
                if (fis != null) fis.close();
                logger.info("[图片流close成功]");
            } catch (IOException ioe) {
                logger.info("just do it");
                ioe.printStackTrace();
            }
        }
    }

    private void pdfResponse(File file, HttpServletResponse hsr){
        logger.info("[获取PDF]");
        //hsr.setHeader("content-type", "application/pdf");
        responseSET(hsr, file.getName(), file);
        binResponse(file, hsr);
    }

    private void otherResponse(File file, HttpServletResponse hsr){
        logger.info("[获取其他文件]");
        //hsr.setHeader("content-type", "application/octet-stream");
        binResponse(file, hsr);
    }



    //3.2 二进制
    private void binResponse(File file, HttpServletResponse hsr) {
        responseSET(hsr, file.getName(), file);
        //hsr.reset();
        //其他写入流+写出流组合
        BufferedInputStream bis = null;
        FileInputStream fis = null;
        BufferedOutputStream bos = null;
        OutputStream os = null;
        try {
            os = hsr.getOutputStream();
            bos = new BufferedOutputStream(os);
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);

            BASE64Encoder base64encoder = new BASE64Encoder();
            byte[] bt = new byte[1024 * 3];
            int len = 0;
            while ((len = bis.read(bt)) != -1) {
                bos.write(base64encoder.encode(bt).getBytes());
                bos.flush();
            }

            logger.info("[二进制流flush成功]");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bis != null) bis.close();
                if (bos != null) bos.close();
                if (os != null) os.close();
                if (fis != null) fis.close();
                logger.info("[二进制流close成功]");
            } catch (IOException ioe) {
                logger.info("just do it");
                ioe.printStackTrace();
            }
        }
    }

    private void responseSET(HttpServletResponse hsr, String fileName, File file){
        if(fileName != null && !"".equals(fileName)){
            hsr.setDateHeader("Expires", -1);                                     // --表示通知浏览器不进行缓存
            hsr.setHeader("Cache-Control", "no-cache");
            hsr.setHeader("Pragma", "no-cache");
            String mime = MimeUtil.getMime().get(fileName.substring(fileName.lastIndexOf(".")));
            if(mime != null && mime.indexOf("text") != -1){
                hsr.setCharacterEncoding("UTF-8");
                hsr.setHeader("Content-Type", mime + ";charset=UTF-8");
            }else if(mime != null && mime.indexOf("image") != -1){
                hsr.setHeader("Content-Type", mime);
            }else if(mime != null && mime.indexOf("audio") != -1){
                hsr.setHeader("Content-Type", mime);
            }else if(mime != null && mime.indexOf("video") != -1){
                hsr.setHeader("Content-Type", mime);
            }else if(mime != null && mime.indexOf("pdf") != -1){
                hsr.setHeader("Content-Type", mime);
            }else{
                hsr.setHeader("Content-Type", "application/octet-stream");
            }

        }
    }


   /* private void recur(Ztree.Node node,  List<Ztree.Node> nodes){
        if(node != null && node.getSons() != null && node.getSons().size() > 0) {
            for (Ztree.Node n : node.getSons()) {
                nodes.add(n);
                recur(n, nodes);
            }
        }
    }*/

}

1.7 util

MimeUtil.java
package com.example.demo.common.util;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by wangbiao-019 on 2018/4/28.
 */
public class MimeUtil {
    private static Map<String, String> mime = new HashMap<String, String>();

    public static Map<String, String> getMime() {
        return mime;
    }

    private static class LazyMimeUtil {
        private static final MimeUtil INSTANCE = new MimeUtil();
    }

    private MimeUtil() {}

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

1.8 Model

package com.example.demo.common.entity;

import java.util.List;

/**
 * Created by wangbiao-019 on 2018/4/18.
 */
public class FileNode {
    int id;
    int pId;
    String name;
    boolean open;   //是否展开
    boolean isParent;   //是否是父节点
    int fileCount;
    List<FileNode> sons;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getpId() {
        return pId;
    }

    public void setpId(int pId) {
        this.pId = pId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isOpen() {
        return open;
    }

    public void setOpen(boolean open) {
        this.open = open;
    }

    public boolean getIsParent() {
        return isParent;
    }

    public void setIsParent(boolean isParent) {
        this.isParent = isParent;
    }

    public int getFileCount() {
        return fileCount;
    }

    public void setFileCount(int fileCount) {
        this.fileCount = fileCount;
    }

    public List<FileNode> getSons() {
        return sons;
    }

    public void setSons(List<FileNode> sons) {
        this.sons = sons;
    }

    @Override
    public String toString() {
        return "{" +
                "\"id\":\"" + id +
                "\", \"pId\":\"" + pId +
                "\", \"name\":\"" + name +
                "\", \"open\":\"" + open +
                "\", \"isParent\":\"" + isParent +
                "\"}";
    }

}

package com.example.demo.common.entity;

/**
 * Created by wangbiao-019 on 2018/4/16.
 */
public class ResponseMessage {
    private String code;
    private String msg;
    private Object obj;

    public ResponseMessage(){}
    public ResponseMessage(String code, String msg, Object obj) {
        this.code = code;
        this.msg = msg;
        this.obj = obj;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    @Override
    public String toString() {
        return "{" +
                "code='" + code + '\'' +
                ", msg='" + msg + '\'' +
                ", obj=" + obj +
                '}';
    }
}

1.9 效果展示

1.txt:可下载
2. png: 可下载
3.xlsx:可下载, 但须恢复
4.mp4: 下载不了

5.pdf: 可下载


6. mp3:下载不了
7. wav 可下载:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值