index.ftl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0" />
  6. <title>kkFileView演示首页</title>
  7. <link rel="stylesheet" href="css/viewer.min.css" />
  8. <link rel="stylesheet" href="css/loading.css" />
  9. <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
  10. <link rel="stylesheet" href="bootstrap-table/bootstrap-table.min.css" />
  11. <link rel="stylesheet" href="gitalk/gitalk.css" />
  12. <script type="text/javascript" src="js/jquery-3.0.0.min.js"></script>
  13. <script type="text/javascript" src="js/jquery.form.min.js"></script>
  14. <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
  15. <script type="text/javascript" src="bootstrap-table/bootstrap-table.min.js"></script>
  16. <script type="text/javascript" src="gitalk/gitalk.min.js"></script>
  17. </head>
  18. <body>
  19. <h1>文件预览项目接入和测试界面</h1>
  20. <div class="panel-group" id="accordion">
  21. <div class="panel panel-default">
  22. <div class="panel-heading">
  23. <h4 class="panel-title">
  24. <a data-toggle="collapse" data-parent="#accordion"
  25. href="#collapseOne">
  26. 接入说明
  27. </a>
  28. </h4>
  29. </div>
  30. <div id="collapseOne" class="panel-collapse collapse">
  31. <div class="panel-body">
  32. <div>
  33. 如果你的项目需要接入文件预览项目,达到对docx、excel、ppt、jpg等文件的预览效果,那么通过在你的项目中加入下面的代码就可以
  34. 成功实现:
  35. <pre style="background-color: #2f332a;color: #cccccc">
  36. var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
  37. window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(url));
  38. </pre>
  39. </div>
  40. <div>
  41. 新增多图片同时预览功能,接口如下:
  42. <pre style="background-color: #2f332a;color: #cccccc">
  43. var fileUrl =url1+"|"+"url2";//多文件使用“|”字符隔开
  44. window.open('http://127.0.0.1:8012/picturesPreview?urls='+encodeURIComponent(fileUrl));
  45. </pre>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="panel panel-default">
  51. <div class="panel-heading">
  52. <h4 class="panel-title">
  53. <a data-toggle="collapse" data-parent="#accordion"
  54. href="#collapseTwo">
  55. 预览测试
  56. </a>
  57. </h4>
  58. </div>
  59. <div id="collapseTwo" class="panel-collapse collapse">
  60. <div class="panel-body">
  61. <div style="padding: 10px">
  62. <form enctype="multipart/form-data" id="fileUpload">
  63. <input type="file" name="file" />
  64. <input type="button" id="btnsubmit" value=" 上 传 " />
  65. </form>
  66. </div>
  67. <div>
  68. <table id="table" data-pagination="true"></table>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="panel panel-default">
  74. <div class="panel-heading">
  75. <h4 class="panel-title">
  76. <a data-toggle="collapse" data-parent="#accordion"
  77. href="#collapseThree">
  78. 更新记录
  79. </a>
  80. </h4>
  81. </div>
  82. <div id="collapseThree" class="panel-collapse collapse in">
  83. <div class="panel-body">
  84. <div>
  85. 2020年05月20日 :<br>
  86. 1. 新增支持全局水印,并支持通过参数动态改变水印内容<br>
  87. 2. 新增支持CAD文件预览<br>
  88. 3. 新增base.url配置,支持使用nginx反向代理和使用context-path<br>
  89. 4. 支持所有配置项支持从环境变量里读取,方便Docker镜像部署和集群中大规模使用<br>
  90. 5. 支持配置限信任站点(只能预览来自信任点的文件源),保护预览服务不被滥用<br>
  91. 6. 支持配置自定义缓存清理时间(cron表达式)<br>
  92. 7. 全部能识别的纯文本直接预览,不用再转跳下载,如.md .java .py等<br>
  93. 8. 支持配置限制转换后的PDF文件下载<br>
  94. 9. 优化maven打包配置,解决 .sh 脚本可能出现换行符问题<br>
  95. 10. 将前端所有CDN依赖放到本地,方便没有外网连接的用户使用<br>
  96. 11. 首页评论服务由搜狐畅言切换到Gitalk<br>
  97. 12. 修复url中包含特殊字符可能会引起的预览异常<br>
  98. 13. 修复转换文件队列addTask异常<br>
  99. 14. 修复其他已经问题<br>
  100. 15. 官网建设:<a href="https://kkfileview.keking.cn">https://kkfileview.keking.cn</a><br>
  101. 16. 官方Docker镜像仓库建设:<a href="https://hub.docker.com/r/keking/kkfileview">https://hub.docker.com/r/keking/kkfileview</a><br><br>
  102. 2019年06月18日 :<br>
  103. 1. 支持自动清理缓存及预览文件<br>
  104. 2. 支持http/https下载流url文件预览<br>
  105. 3. 支持FTP url文件预览<br>
  106. 4. 加入Docker构建<br><br>
  107. 2019年04月08日 :<br>
  108. 1. 缓存及队列实现抽象,提供JDK和REDIS两种实现(REDIS成为可选依赖)<br>
  109. 2. 打包方式提供zip和tar.gz包,并提供一键启动脚本<br><br>
  110. 2018年01月19日 :<br>
  111. 1. 大文件入队提前处理<br>
  112. 1. 新增addTask文件转换入队接口<br>
  113. 1. 采用redis队列,支持kkFIleView接口和异构系统入队两种方式<br><br>
  114. 2018年01月15日 :<br>
  115. 1.首页新增社会化评论框<br><br>
  116. 2018年01月12日 :<br>
  117. 1.新增多图片同时预览<br>
  118. 2.支持压缩包内图片轮番预览<br><br>
  119. 2018年01月02日 :<br>
  120. 1.修复txt等文本编码问题导致预览乱码<br>
  121. 2.修复项目模块依赖引入不到的问题<br>
  122. 3.新增spring boot profile,支持多环境配置<br>
  123. 4.引入pdf.js预览doc等文件,支持doc标题生成pdf预览菜单,支持手机端预览<br><br>
  124. 2017年12月12日:<br>
  125. 1.项目gitee开源:<a href="https://gitee.com/kekingcn/file-online-preview" target="_blank">https://gitee.com/kekingcn/file-online-preview</a><br>
  126. 2.项目github开源:<a href="https://github.com/kekingcn/kkFileView" target="_blank">https://github.com/kekingcn/kkFileView</a>
  127. </div>
  128. </div>
  129. </div>
  130. <div class="panel-body">
  131. <div id = "comments"></div>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="loading_container">
  136. <div class="spinner">
  137. <div class="spinner-container container1">
  138. <div class="circle1"></div>
  139. <div class="circle2"></div>
  140. <div class="circle3"></div>
  141. <div class="circle4"></div>
  142. </div>
  143. <div class="spinner-container container2">
  144. <div class="circle1"></div>
  145. <div class="circle2"></div>
  146. <div class="circle3"></div>
  147. <div class="circle4"></div>
  148. </div>
  149. <div class="spinner-container container3">
  150. <div class="circle1"></div>
  151. <div class="circle2"></div>
  152. <div class="circle3"></div>
  153. <div class="circle4"></div>
  154. </div>
  155. </div>
  156. </div>
  157. <script>
  158. function deleteFile(fileName) {
  159. $.ajax({
  160. url: '${baseUrl}deleteFile?fileName=' + encodeURIComponent(fileName),
  161. success: function (data) {
  162. // 删除完成,刷新table
  163. if (1 == data.code) {
  164. alert(data.msg);
  165. } else{
  166. $('#table').bootstrapTable('refresh', {});
  167. }
  168. },
  169. error: function (data) {
  170. console.log(data);
  171. }
  172. })
  173. }
  174. $(function () {
  175. $('#table').bootstrapTable({
  176. url: 'listFiles',
  177. columns: [{
  178. field: 'fileName',
  179. title: '文件名'
  180. }, {
  181. field: 'action',
  182. title: '操作'
  183. },]
  184. }).on('pre-body.bs.table', function (e,data) {
  185. // 每个data添加一列用来操作
  186. $(data).each(function (index, item) {
  187. item.action = "<a class='btn btn-default' target='_blank' href='${baseUrl}onlinePreview?url="+ encodeURIComponent('${baseUrl}' + item.fileName ) +"'>预览</a>" +
  188. "<a class='btn btn-default' href='javascript:void(0);' onclick='deleteFile(\""+item.fileName+"\")'>删除</a>";
  189. });
  190. return data;
  191. }).on('post-body.bs.table', function (e,data) {
  192. return data;
  193. });
  194. function showLoadingDiv() {
  195. var height = window.document.documentElement.clientHeight - 1;
  196. $(".loading_container").css("height", height).show();
  197. }
  198. $("#btnsubmit").click(function () {
  199. showLoadingDiv();
  200. $("#fileUpload").ajaxSubmit({
  201. success: function (data) {
  202. // 上传完成,刷新table
  203. if (1 == data.code) {
  204. alert(data.msg);
  205. } else {
  206. $('#table').bootstrapTable('refresh', {});
  207. }
  208. $(".loading_container").hide();
  209. },
  210. error: function () {
  211. alert('上传失败,请联系管理员');
  212. $(".loading_container").hide();
  213. },
  214. url: 'fileUpload', /*设置post提交到的页面*/
  215. type: "post", /*设置表单以post方法提交*/
  216. dataType: "json" /*设置返回值类型为文本*/
  217. });
  218. });
  219. var gitalk = new Gitalk({
  220. clientID: '525d7f16e17aab08cef5',
  221. clientSecret: 'd1154e3aee5c8f1cbdc918b5c97a4f4157e0bfd9',
  222. repo: 'kkFileView',
  223. owner: 'kekingcn',
  224. admin: ['kekingcn,klboke,gitchenjh'],
  225. language: 'zh-CN',
  226. id: location.pathname,
  227. distractionFreeMode: false
  228. })
  229. gitalk.render((document.getElementById('comments')))
  230. });
  231. </script>
  232. </body>
  233. </html>