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 效果展示
2. png: 可下载
3.xlsx:可下载, 但须恢复
4.mp4: 下载不了
5.pdf: 可下载
6. mp3:下载不了
7. wav 可下载: