No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

upload.htm 8.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <html lang="zh-cn">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  4. <title>文件管理</title>
  5. <link rel="stylesheet" type="text/css" href="__PUBLIC__/plugins/webuploader/webuploader.css?v={$version|default='1.2.9'}">
  6. <link rel="stylesheet" type="text/css" href="__PUBLIC__/plugins/webuploader/css/style.css?v={$version|default='1.2.9'}">
  7. <script type="text/javascript">
  8. var eyou_basefile = "{$Request.baseFile}";
  9. var module_name = "{$Think.const.MODULE_NAME}";
  10. var __root_dir__ = "__ROOT_DIR__";
  11. </script>
  12. </head>
  13. <body>
  14. <div class="upload-box" style="height: 90%; overflow: hidden;">
  15. <div class="container">
  16. <div class="area upload-area area-checked" id="upload_area">
  17. <div id="uploader">
  18. <div class="statusBar" style="display:none;">
  19. <div class="progress">
  20. <span class="text">0%</span>
  21. <span class="percentage"></span>
  22. </div><div class="info"></div>
  23. <div class="btns">
  24. <div id="filePicker2"></div><div class="uploadBtn">开始上传</div>
  25. <div class="saveBtn">确定使用</div>
  26. </div>
  27. </div>
  28. <div class="queueList">
  29. <div id="dndArea" class="placeholder">
  30. <div id="filePicker"></div>
  31. <p>或将文件拖到这里,本次最多可选{$info.num|default=1}个</p>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <div class="area manage-area" id="manage_area">
  37. <ul class="choose-btns">
  38. <li class="btn sure checked">确定</li>
  39. <li class="btn cancel">取消</li>
  40. </ul>
  41. <div class="file-list">
  42. <ul id="file_all_list">
  43. <!--<li class="checked">
  44. <div class="img">
  45. <img src="" />
  46. <span class="icon"></span>
  47. </div>
  48. <div class="desc"></div>
  49. </li>-->
  50. </ul>
  51. </div>
  52. </div>
  53. <div class="area search-area" id="search_area">
  54. <ul class="choose-btns">
  55. <li class="search">
  56. <div class="search-condition">
  57. <input class="key" type="text" />
  58. <input class="submit" type="button" hidefocus="true" value="搜索" />
  59. </div>
  60. </li>
  61. <li class="btn sure checked">确定</li>
  62. <li class="btn cancel">取消</li>
  63. </ul>
  64. <div class="file-list">
  65. <ul id="file_search_list">
  66. <!--<li>
  67. <div class="img">
  68. <img src="" />
  69. <span class="icon"></span>
  70. </div>
  71. <div class="desc"></div>
  72. </li>-->
  73. </ul>
  74. </div>
  75. </div>
  76. <div class="fileWarp" style="display:none;">
  77. <fieldset>
  78. <legend>列表</legend>
  79. <ul>
  80. </ul>
  81. </fieldset>
  82. </div>
  83. </div>
  84. </div>
  85. {load href="__STATIC__/common/js/jquery.min.js" /}
  86. <script type="text/javascript" src="__PUBLIC__/plugins/webuploader/webuploader.min.js?v={$version|default='1.2.9'}"></script>
  87. <script type="text/javascript" src="__PUBLIC__/plugins/webuploader/upload.js?v={$version|default='1.2.9'}"></script>
  88. <script type="text/javascript" src="__PUBLIC__/plugins/layer-v3.1.0/layer.js?v={$version|default='1.2.9'}"></script>
  89. <script type="text/javascript">
  90. $(function(){
  91. var config = {
  92. "swf":"__PUBLIC__/plugins/webuploader/Uploader.swf",
  93. "server":"{$info.upload}",
  94. "filelistPah":"{$info.fileList}",
  95. "delPath":"{:U('Uploadify/delupload')}",
  96. "chunked":false,
  97. "chunkSize":524288,
  98. "fileNumLimit":{$info.num|default=1},
  99. "fileSizeLimit":209715200,
  100. "fileSingleSizeLimit":{$info.size},
  101. "fileVal":"file",
  102. "auto":true,
  103. "formData":{},
  104. "duplicate": true, // 允许上传重复文件
  105. // "accept": {
  106. // "title": 'Images',
  107. // "extensions": '{$info.type}',
  108. // "mimeTypes": 'image/*'
  109. // },
  110. "pick":{"id":"#filePicker","label":"点击选择图片","name":"file"},
  111. "thumb":{"width":110,"height":110,"quality":70,"allowMagnify":true,"crop":true,"preserveHeaders":false,"type":"image\/jpeg"},
  112. "compress": {
  113. "width": 380000,
  114. "height": 380000,
  115. "quality": 100,
  116. "allowMagnify": false,
  117. "crop": false,
  118. "preserveHeaders": true
  119. }
  120. };
  121. Manager.upload($.extend(config, {type : "Images"}));
  122. /*点击保存按钮时
  123. *判断允许上传数,检测是单一文件上传还是组文件上传
  124. *如果是单一文件,上传结束后将地址存入$input元素
  125. *如果是组文件上传,则创建input样式,添加到$input后面
  126. *隐藏父框架,清空列队,移除已上传文件样式*/
  127. $(".statusBar .saveBtn").click(function(){
  128. var callback = "{$info.func}";
  129. var num = {$info.num|default=1};
  130. var fileurl_tmp = [];
  131. if(callback != "undefined"){
  132. if(num > 1){
  133. var src = '';
  134. $("input[name^='fileurl_tmp']").each(function(index,dom){
  135. /*禁止篡改上传图片为远程地址*/
  136. remsg = checkUrl(dom.value);
  137. if (remsg) {
  138. window.parent.layer.closeAll();
  139. window.parent.layer.msg(remsg, {icon: 2,time: 1500});
  140. return false;
  141. }
  142. /*--end*/
  143. src = $('.WU_FILE_'+index).find("input[name^='fileurl_tmp']").val() || dom.value;
  144. fileurl_tmp[index] = src;
  145. });
  146. }else{
  147. fileurl_tmp = $("input[name^='fileurl_tmp']").val();
  148. /*禁止篡改上传图片为远程地址*/
  149. remsg = checkUrl(fileurl_tmp);
  150. if (remsg) {
  151. window.parent.layer.closeAll();
  152. window.parent.layer.msg(remsg, {icon: 2,time: 1500});
  153. return false;
  154. }
  155. /*--end*/
  156. }
  157. /*防止图片上传过程中用户点击确定,导致获取图片失败 by 小虎哥*/
  158. if (fileurl_tmp == undefined || fileurl_tmp.length == 0) {
  159. layer.msg('正在处理……', {icon: 6,time: 2000});
  160. return false;
  161. }
  162. /*--end*/
  163. eval('window.parent.'+callback+'(fileurl_tmp)');
  164. window.parent.layer.closeAll();
  165. return;
  166. }
  167. if(num > 1){
  168. var fileurl_tmp = "";
  169. $("input[name^='fileurl_tmp']").each(function(){
  170. fileurl_tmp += '<li rel="'+ this.value +'"><input class="input-text" type="text" name="{$info.input}[]" value="'+ this.value +'" /><a href="javascript:void(0);" onclick="ClearPicArr(\''+ this.value +'\',\'\')">删除</a></li>';
  171. });
  172. $(window.parent.document).find("#{$info.input}").append(fileurl_tmp);
  173. }else{
  174. $(window.parent.document).find("#{$info.input}").val($("input[name^='fileurl_tmp']").val());
  175. }
  176. window.parent.layer.closeAll();
  177. });
  178. function checkUrl(urlString){
  179. var remsg = false;
  180. if (urlString != "") {
  181. var reg = /^((\w)*:)?(\/\/).*$/;
  182. if(reg.test(urlString)){
  183. $.ajax({
  184. type:'POST',
  185. url:"{:url('api/Ajax/get_third_domain', ['_ajax'=>1])}",
  186. data:{},
  187. success:function(res){
  188. var third_domain = res.data;
  189. if (1 == res.code && third_domain != '') {
  190. var arr = urlString.split('/');
  191. if (arr[2] != third_domain) {
  192. remsg = '禁止篡改上传图片为远程地址!';
  193. }
  194. }else {
  195. remsg = '禁止篡改上传图片为远程地址!';
  196. }
  197. }
  198. });
  199. }
  200. }
  201. return remsg;
  202. }
  203. });
  204. </script>
  205. </body>
  206. </html>