diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiCommonController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiCommonController.java index 64fd775b..1bbf5934 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiCommonController.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiCommonController.java @@ -9,6 +9,7 @@ import com.zyplayer.doc.data.config.security.DocUserDetails; import com.zyplayer.doc.data.config.security.DocUserUtil; import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile; import com.zyplayer.doc.data.service.manage.WikiPageFileService; +import com.zyplayer.doc.wiki.framework.consts.Const; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,8 +24,8 @@ import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; -import java.nio.file.Files; import java.util.Date; +import java.util.Optional; /** * 文档控制器 @@ -78,7 +79,7 @@ public class WikiCommonController { } @GetMapping("/file") - public ResponseJson file(String uuid, HttpServletResponse response) { + public ResponseJson file(HttpServletResponse response, String uuid) { if (StringUtils.isBlank(uuid)) { return DocResponseJson.warn("请指定文件ID"); } @@ -89,10 +90,14 @@ public class WikiCommonController { return DocResponseJson.warn("未找到指定文件"); } try { - String fileName = pageFile.getFileName(); + String fileName = Optional.ofNullable(pageFile.getFileName()).orElse(""); File file = new File(pageFile.getFileUrl()); - String contentType = Files.probeContentType(file.toPath()); - response.setContentType(contentType); + String fileSuffix = ""; + if (fileName.lastIndexOf(".") >= 0) { + fileSuffix = fileName.substring(fileName.lastIndexOf(".")); + } + String mimeStr = Optional.ofNullable(Const.mimeMap.get(fileSuffix)).orElse("text/plain"); + response.setContentType(mimeStr); response.setHeader("Content-disposition", "inline;filename=" + URLEncoder.encode(fileName, "UTF-8")); // response.setHeader("Content-disposition", "inline;filename=" + fileName); // response.setHeader("Content-Disposition", "inline; fileName=" + fileName + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8")); diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/vo/WikiPageCommentVo.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/vo/WikiPageCommentVo.java index d2c2812f..624758d7 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/vo/WikiPageCommentVo.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/vo/WikiPageCommentVo.java @@ -5,10 +5,6 @@ import com.zyplayer.doc.data.repository.manage.entity.WikiPageComment; import java.util.List; /** - *

- * - *

- * * @author 暮光:城中城 * @since 2019-02-24 */ diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/Const.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/Const.java new file mode 100644 index 00000000..c14c5f78 --- /dev/null +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/Const.java @@ -0,0 +1,336 @@ +package com.zyplayer.doc.wiki.framework.consts; + +import java.util.HashMap; +import java.util.Map; + +public class Const { + //如果有多个相同的charset类型,可以使用""代替或者指定统一的文件类型,指定的语句需要放在所有相同的语句的第一个位置 + //更多类型可以访问 http://tool.oschina.net/commons + public static final Map mimeMap; + static{ + mimeMap = new HashMap<>(); + mimeMap.put(".*", "application/octet-stream"); + mimeMap.put(".001", "application/x-001"); + mimeMap.put(".301", "application/x-301"); + mimeMap.put(".323", "text/h323"); + mimeMap.put(".906", "application/x-906"); + mimeMap.put(".907", "drawing/907"); + mimeMap.put(".a11", "application/x-a11"); + mimeMap.put(".acp", "audio/x-mei-aac"); + mimeMap.put(".ai", "application/postscript"); + mimeMap.put(".aif", "audio/aiff"); + mimeMap.put(".aifc", "audio/aiff"); + mimeMap.put(".aiff", "audio/aiff"); + mimeMap.put(".anv", "application/x-anv"); + mimeMap.put(".asa", "text/asa"); + mimeMap.put(".asf", "video/x-ms-asf"); + mimeMap.put(".asp", "text/asp"); + mimeMap.put(".asx", "video/x-ms-asf"); + mimeMap.put(".au", "audio/basic"); + mimeMap.put(".avi", "video/avi"); + mimeMap.put(".awf", "application/vnd.adobe.workflow"); + mimeMap.put(".biz", "text/xml"); + mimeMap.put(".bmp", "application/x-bmp"); + mimeMap.put(".bot", "application/x-bot"); + mimeMap.put(".c4t", "application/x-c4t"); + mimeMap.put(".c90", "application/x-c90"); + mimeMap.put(".cal", "application/x-cals"); + mimeMap.put(".cat", "application/vnd.ms-pki.seccat"); + mimeMap.put(".cdf", "application/x-netcdf"); + mimeMap.put(".cdr", "application/x-cdr"); + mimeMap.put(".cel", "application/x-cel"); + mimeMap.put(".cer", "application/x-x509-ca-cert"); + mimeMap.put(".cg4", "application/x-g4"); + mimeMap.put(".cgm", "application/x-cgm"); + mimeMap.put(".cit", "application/x-cit"); + mimeMap.put(".class", "java/*"); + mimeMap.put(".cml", "text/xml"); + mimeMap.put(".cmp", "application/x-cmp"); + mimeMap.put(".cmx", "application/x-cmx"); + mimeMap.put(".cot", "application/x-cot"); + mimeMap.put(".crl", "application/pkix-crl"); + mimeMap.put(".crt", "application/x-x509-ca-cert"); + mimeMap.put(".csi", "application/x-csi"); + mimeMap.put(".css", "text/css"); + mimeMap.put(".cut", "application/x-cut"); + mimeMap.put(".dbf", "application/x-dbf"); + mimeMap.put(".dbm", "application/x-dbm"); + mimeMap.put(".dbx", "application/x-dbx"); + mimeMap.put(".dcd", "text/xml"); + mimeMap.put(".dcx", "application/x-dcx"); + mimeMap.put(".der", "application/x-x509-ca-cert"); + mimeMap.put(".dgn", "application/x-dgn"); + mimeMap.put(".dib", "application/x-dib"); + mimeMap.put(".dll", "application/x-msdownload"); + mimeMap.put(".doc", "application/msword"); + mimeMap.put(".dot", "application/msword"); + mimeMap.put(".drw", "application/x-drw"); + mimeMap.put(".dtd", "text/xml"); + mimeMap.put(".dwf", "Model/vnd.dwf"); + mimeMap.put(".dwg", "application/x-dwg"); + mimeMap.put(".dxb", "application/x-dxb"); + mimeMap.put(".dxf", "application/x-dxf"); + mimeMap.put(".edn", "application/vnd.adobe.edn"); + mimeMap.put(".emf", "application/x-emf"); + mimeMap.put(".eml", "message/rfc822"); + mimeMap.put(".ent", "text/xml"); + mimeMap.put(".epi", "application/x-epi"); + mimeMap.put(".eps", "application/x-ps"); + mimeMap.put(".etd", "application/x-ebx"); + mimeMap.put(".exe", "application/x-msdownload"); + mimeMap.put(".fax", "image/fax"); + mimeMap.put(".fdf", "application/vnd.fdf"); + mimeMap.put(".fif", "application/fractals"); + mimeMap.put(".fo", "text/xml"); + mimeMap.put(".frm", "application/x-frm"); + mimeMap.put(".g4", "application/x-g4"); + mimeMap.put(".gbr", "application/x-gbr"); + mimeMap.put(".gcd", "application/x-gcd"); + mimeMap.put(".gif", "image/gif"); + mimeMap.put(".gl2", "application/x-gl2"); + mimeMap.put(".gp4", "application/x-gp4"); + mimeMap.put(".hgl", "application/x-hgl"); + mimeMap.put(".hmr", "application/x-hmr"); + mimeMap.put(".hpg", "application/x-hpgl"); + mimeMap.put(".hpl", "application/x-hpl"); + mimeMap.put(".hqx", "application/mac-binhex40"); + mimeMap.put(".hrf", "application/x-hrf"); + mimeMap.put(".hta", "application/hta"); + mimeMap.put(".htc", "text/x-component"); + mimeMap.put(".htm", "text/html"); + mimeMap.put(".html", "text/html"); + mimeMap.put(".htt", "text/webviewhtml"); + mimeMap.put(".htx", "text/html"); + mimeMap.put(".icb", "application/x-icb"); + mimeMap.put(".ico", "image/x-icon"); + mimeMap.put(".iff", "application/x-iff"); + mimeMap.put(".ig4", "application/x-g4"); + mimeMap.put(".igs", "application/x-igs"); + mimeMap.put(".iii", "application/x-iphone"); + mimeMap.put(".img", "application/x-img"); + mimeMap.put(".ins", "application/x-internet-signup"); + mimeMap.put(".isp", "application/x-internet-signup"); + mimeMap.put(".IVF", "video/x-ivf"); + mimeMap.put(".java", "java/*"); + mimeMap.put(".jfif", "image/jpeg"); + mimeMap.put(".jpe", "image/jpeg"); + mimeMap.put(".jpeg", "image/jpeg"); + mimeMap.put(".jpg", "image/jpeg"); + mimeMap.put(".js", "application/x-javascript"); + mimeMap.put(".jsp", "text/html"); + mimeMap.put(".la1", "audio/x-liquid-file"); + mimeMap.put(".lar", "application/x-laplayer-reg"); + mimeMap.put(".latex", "application/x-latex"); + mimeMap.put(".lavs", "audio/x-liquid-secure"); + mimeMap.put(".lbm", "application/x-lbm"); + mimeMap.put(".lmsff", "audio/x-la-lms"); + mimeMap.put(".ls", "application/x-javascript"); + mimeMap.put(".ltr", "application/x-ltr"); + mimeMap.put(".m1v", "video/x-mpeg"); + mimeMap.put(".m2v", "video/x-mpeg"); + mimeMap.put(".m3u", "audio/mpegurl"); + mimeMap.put(".m4e", "video/mpeg4"); + mimeMap.put(".mac", "application/x-mac"); + mimeMap.put(".man", "application/x-troff-man"); + mimeMap.put(".math", "text/xml"); + mimeMap.put(".mdb", "application/msaccess"); + mimeMap.put(".mfp", "application/x-shockwave-flash"); + mimeMap.put(".mht", "message/rfc822"); + mimeMap.put(".mhtml", "message/rfc822"); + mimeMap.put(".mi", "application/x-mi"); + mimeMap.put(".mid", "audio/mid"); + mimeMap.put(".midi", "audio/mid"); + mimeMap.put(".mil", "application/x-mil"); + mimeMap.put(".mml", "text/xml"); + mimeMap.put(".mnd", "audio/x-musicnet-download"); + mimeMap.put(".mns", "audio/x-musicnet-stream"); + mimeMap.put(".mocha", "application/x-javascript"); + mimeMap.put(".movie", "video/x-sgi-movie"); + mimeMap.put(".mp1", "audio/mp1"); + mimeMap.put(".mp2", "audio/mp2"); + mimeMap.put(".mp2v", "video/mpeg"); + mimeMap.put(".mp3", "audio/mp3"); + mimeMap.put(".mp4", "video/mpeg4"); + mimeMap.put(".mpa", "video/x-mpg"); + mimeMap.put(".mpd", "application/vnd.ms-project"); + mimeMap.put(".mpe", "video/x-mpeg"); + mimeMap.put(".mpeg", "video/mpg"); + mimeMap.put(".mpg", "video/mpg"); + mimeMap.put(".mpga", "audio/rn-mpeg"); + mimeMap.put(".mpp", "application/vnd.ms-project"); + mimeMap.put(".mps", "video/x-mpeg"); + mimeMap.put(".mpt", "application/vnd.ms-project"); + mimeMap.put(".mpv", "video/mpg"); + mimeMap.put(".mpv2", "video/mpeg"); + mimeMap.put(".mpw", "application/vnd.ms-project"); + mimeMap.put(".mpx", "application/vnd.ms-project"); + mimeMap.put(".mtx", "text/xml"); + mimeMap.put(".mxp", "application/x-mmxp"); + mimeMap.put(".net", "image/pnetvue"); + mimeMap.put(".nrf", "application/x-nrf"); + mimeMap.put(".nws", "message/rfc822"); + mimeMap.put(".odc", "text/x-ms-odc"); + mimeMap.put(".out", "application/x-out"); + mimeMap.put(".p10", "application/pkcs10"); + mimeMap.put(".p12", "application/x-pkcs12"); + mimeMap.put(".p7b", "application/x-pkcs7-certificates"); + mimeMap.put(".p7c", "application/pkcs7-mime"); + mimeMap.put(".p7m", "application/pkcs7-mime"); + mimeMap.put(".p7r", "application/x-pkcs7-certreqresp"); + mimeMap.put(".p7s", "application/pkcs7-signature"); + mimeMap.put(".pc5", "application/x-pc5"); + mimeMap.put(".pci", "application/x-pci"); + mimeMap.put(".pcl", "application/x-pcl"); + mimeMap.put(".pcx", "application/x-pcx"); + mimeMap.put(".pdf", "application/pdf"); + mimeMap.put(".pdx", "application/vnd.adobe.pdx"); + mimeMap.put(".pfx", "application/x-pkcs12"); + mimeMap.put(".pgl", "application/x-pgl"); + mimeMap.put(".pic", "application/x-pic"); + mimeMap.put(".pko", "application/vnd.ms-pki.pko"); + mimeMap.put(".pl", "application/x-perl"); + mimeMap.put(".plg", "text/html"); + mimeMap.put(".pls", "audio/scpls"); + mimeMap.put(".plt", "application/x-plt"); + mimeMap.put(".png", "image/png"); + mimeMap.put(".pot", "application/vnd.ms-powerpoint"); + mimeMap.put(".ppa", "application/vnd.ms-powerpoint"); + mimeMap.put(".ppm", "application/x-ppm"); + mimeMap.put(".pps", "application/vnd.ms-powerpoint"); + mimeMap.put(".ppt", "application/vnd.ms-powerpoint"); + mimeMap.put(".pr", "application/x-pr"); + mimeMap.put(".prf", "application/pics-rules"); + mimeMap.put(".prn", "application/x-prn"); + mimeMap.put(".prt", "application/x-prt"); + mimeMap.put(".ps", "application/x-ps"); + mimeMap.put(".ptn", "application/x-ptn"); + mimeMap.put(".pwz", "application/vnd.ms-powerpoint"); + mimeMap.put(".r3t", "text/vnd.rn-realtext3d"); + mimeMap.put(".ra", "audio/vnd.rn-realaudio"); + mimeMap.put(".ram", "audio/x-pn-realaudio"); + mimeMap.put(".ras", "application/x-ras"); + mimeMap.put(".rat", "application/rat-file"); + mimeMap.put(".rdf", "text/xml"); + mimeMap.put(".rec", "application/vnd.rn-recording"); + mimeMap.put(".red", "application/x-red"); + mimeMap.put(".rgb", "application/x-rgb"); + mimeMap.put(".rjs", "application/vnd.rn-realsystem-rjs"); + mimeMap.put(".rjt", "application/vnd.rn-realsystem-rjt"); + mimeMap.put(".rlc", "application/x-rlc"); + mimeMap.put(".rle", "application/x-rle"); + mimeMap.put(".rm", "application/vnd.rn-realmedia"); + mimeMap.put(".rmf", "application/vnd.adobe.rmf"); + mimeMap.put(".rmi", "audio/mid"); + mimeMap.put(".rmj", "application/vnd.rn-realsystem-rmj"); + mimeMap.put(".rmm", "audio/x-pn-realaudio"); + mimeMap.put(".rmp", "application/vnd.rn-rn_music_package"); + mimeMap.put(".rms", "application/vnd.rn-realmedia-secure"); + mimeMap.put(".rmvb", "application/vnd.rn-realmedia-vbr"); + mimeMap.put(".rmx", "application/vnd.rn-realsystem-rmx"); + mimeMap.put(".rnx", "application/vnd.rn-realplayer"); + mimeMap.put(".rp", "image/vnd.rn-realpix"); + mimeMap.put(".rpm", "audio/x-pn-realaudio-plugin"); + mimeMap.put(".rsml", "application/vnd.rn-rsml"); + mimeMap.put(".rt", "text/vnd.rn-realtext"); + mimeMap.put(".rtf", "application/msword"); + mimeMap.put(".rv", "video/vnd.rn-realvideo"); + mimeMap.put(".sam", "application/x-sam"); + mimeMap.put(".sat", "application/x-sat"); + mimeMap.put(".sdp", "application/sdp"); + mimeMap.put(".sdw", "application/x-sdw"); + mimeMap.put(".sit", "application/x-stuffit"); + mimeMap.put(".slb", "application/x-slb"); + mimeMap.put(".sld", "application/x-sld"); + mimeMap.put(".slk", "drawing/x-slk"); + mimeMap.put(".smi", "application/smil"); + mimeMap.put(".smil", "application/smil"); + mimeMap.put(".smk", "application/x-smk"); + mimeMap.put(".snd", "audio/basic"); + mimeMap.put(".sol", "text/plain"); + mimeMap.put(".sor", "text/plain"); + mimeMap.put(".spc", "application/x-pkcs7-certificates"); + mimeMap.put(".spl", "application/futuresplash"); + mimeMap.put(".spp", "text/xml"); + mimeMap.put(".ssm", "application/streamingmedia"); + mimeMap.put(".sst", "application/vnd.ms-pki.certstore"); + mimeMap.put(".stl", "application/vnd.ms-pki.stl"); + mimeMap.put(".stm", "text/html"); + mimeMap.put(".sty", "application/x-sty"); + mimeMap.put(".svg", "text/xml"); + mimeMap.put(".swf", "application/x-shockwave-flash"); + mimeMap.put(".tdf", "application/x-tdf"); + mimeMap.put(".tg4", "application/x-tg4"); + mimeMap.put(".tga", "application/x-tga"); + mimeMap.put(".tif", "image/tiff"); + mimeMap.put(".tiff", "image/tiff"); + mimeMap.put(".tld", "text/xml"); + mimeMap.put(".top", "drawing/x-top"); + mimeMap.put(".torrent", "application/x-bittorrent"); + mimeMap.put(".tsd", "text/xml"); + mimeMap.put(".txt", "text/plain"); + mimeMap.put(".uin", "application/x-icq"); + mimeMap.put(".uls", "text/iuls"); + mimeMap.put(".vcf", "text/x-vcard"); + mimeMap.put(".vda", "application/x-vda"); + mimeMap.put(".vdx", "application/vnd.visio"); + mimeMap.put(".vml", "text/xml"); + mimeMap.put(".vpg", "application/x-vpeg005"); + mimeMap.put(".vsd", "application/vnd.visio"); + mimeMap.put(".vss", "application/vnd.visio"); + mimeMap.put(".vst", "application/vnd.visio"); + mimeMap.put(".vsw", "application/vnd.visio"); + mimeMap.put(".vsx", "application/vnd.visio"); + mimeMap.put(".vtx", "application/vnd.visio"); + mimeMap.put(".vxml", "text/xml"); + mimeMap.put(".wav", "audio/wav"); + mimeMap.put(".wax", "audio/x-ms-wax"); + mimeMap.put(".wb1", "application/x-wb1"); + mimeMap.put(".wb2", "application/x-wb2"); + mimeMap.put(".wb3", "application/x-wb3"); + mimeMap.put(".wbmp", "image/vnd.wap.wbmp"); + mimeMap.put(".wiz", "application/msword"); + mimeMap.put(".wk3", "application/x-wk3"); + mimeMap.put(".wk4", "application/x-wk4"); + mimeMap.put(".wkq", "application/x-wkq"); + mimeMap.put(".wks", "application/x-wks"); + mimeMap.put(".wm", "video/x-ms-wm"); + mimeMap.put(".wma", "audio/x-ms-wma"); + mimeMap.put(".wmd", "application/x-ms-wmd"); + mimeMap.put(".wmf", "application/x-wmf"); + mimeMap.put(".wml", "text/vnd.wap.wml"); + mimeMap.put(".wmv", "video/x-ms-wmv"); + mimeMap.put(".wmx", "video/x-ms-wmx"); + mimeMap.put(".wmz", "application/x-ms-wmz"); + mimeMap.put(".wp6", "application/x-wp6"); + mimeMap.put(".wpd", "application/x-wpd"); + mimeMap.put(".wpg", "application/x-wpg"); + mimeMap.put(".wpl", "application/vnd.ms-wpl"); + mimeMap.put(".wq1", "application/x-wq1"); + mimeMap.put(".wr1", "application/x-wr1"); + mimeMap.put(".wri", "application/x-wri"); + mimeMap.put(".wrk", "application/x-wrk"); + mimeMap.put(".ws", "application/x-ws"); + mimeMap.put(".ws2", "application/x-ws"); + mimeMap.put(".wsc", "text/scriptlet"); + mimeMap.put(".wsdl", "text/xml"); + mimeMap.put(".wvx", "video/x-ms-wvx"); + mimeMap.put(".xdp", "application/vnd.adobe.xdp"); + mimeMap.put(".xdr", "text/xml"); + mimeMap.put(".xfd", "application/vnd.adobe.xfd"); + mimeMap.put(".xfdf", "application/vnd.adobe.xfdf"); + mimeMap.put(".xhtml", "text/html"); + mimeMap.put(".xls", "application/vnd.ms-excel"); + mimeMap.put(".xlw", "application/x-xlw"); + mimeMap.put(".xml", "text/xml"); + mimeMap.put(".xpl", "audio/scpls"); + mimeMap.put(".xq", "text/xml"); + mimeMap.put(".xql", "text/xml"); + mimeMap.put(".xquery", "text/xml"); + mimeMap.put(".xsd", "text/xml"); + mimeMap.put(".xsl", "text/xml"); + mimeMap.put(".xslt", "text/xml"); + mimeMap.put(".xwd", "application/x-xwd"); + mimeMap.put(".x_b", "application/x-x_b"); + mimeMap.put(".x_t", "application/x-x_t"); + } +}