alimanage.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. @extends('admin.layout')
  2. @section('content')
  3. <script type="text/javascript" src="/base/js/zclip/jquery.zclip.min.js?v={{config("sys.version")}}" ></script>
  4. <style type="text/css">
  5. #new-upload-btn { display:none; }
  6. #new-upload-btn .notice{position: relative; left: 8px; top: -9px; color: #1a7bb9;}
  7. #clicklayer {overflow: hidden; height: 35px; position: relative; left: 0; top: 0px; zoom: 1; z-index: 2; cursor:pointer; }
  8. .opacityupload { width:100%; position: absolute; left: 0px;top: 2px; z-index: 10; height: 35px; opacity: 0; }
  9. .opacityupload object { width: 100%; cursor:pointer;}
  10. </style>
  11. <div class="wrapper wrapper-content">
  12. <div class="row">
  13. <div class="col-sm-3">
  14. <div class="ibox float-e-margins">
  15. <div class="ibox-content">
  16. <div class="file-manager">
  17. <h5>当前路径:</h5>
  18. <?php echo $folderPath; ?>
  19. <div class="hr-line-dashed"></div>
  20. <form method="POST" action="" accept-charset="UTF-8">
  21. <div class="input-group">
  22. <input type="text" value="" placeholder="请输入当前路径下的目录名,不含“/”" name="dirname" class="input-sm form-control">
  23. <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"/>
  24. <span class="input-group-btn">
  25. <button type="submit" class="btn btn-sm btn-primary">创建目录</button>
  26. </span>
  27. </div>
  28. </form>
  29. <div id="new-upload-btn">
  30. <div class="hr-line-dashed"></div>
  31. <span id="upload_single_file"></span><span class="notice">单一文件上传,同名文件将会被覆盖</span>
  32. <div class="hr-line-dashed"></div>
  33. <div id="clicklayer">
  34. <button class="btn btn-primary btn-block">批量上传文件</button>
  35. <div class="opacityupload"><span id="upload_more_file"></span></div>
  36. </div>
  37. </div>
  38. @if(isset($item['dir']))
  39. <div class="hr-line-dashed"></div>
  40. <h5>文件夹</h5>
  41. <ul class="folder-list" style="padding: 0">
  42. @foreach($item['dir'] AS $dir)
  43. <li><a href="{{ U('Base/Tool/alimanage')}}?folder={{ $dir->getPrefix() }}"><i class="fa fa-folder"></i> {{ $dir->getPrefix() }}</a></li>
  44. @endforeach
  45. </ul>
  46. @endif
  47. <div class="clearfix"></div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <div class="col-sm-9 animated fadeInRight">
  53. <div class="row">
  54. <div class="col-sm-12">
  55. @if(isset($item['obj']) && is_array($item['obj']))
  56. @foreach($item['obj'] AS $file)
  57. <?php
  58. if(Request::input('folder') == $file->getKey()) continue;
  59. //是否过去日期
  60. $pastdate = false;
  61. if(strtotime(substr($file->getLastModified(), 0, 10)) < strtotime('2015-11-03')){
  62. $pastdate = true;
  63. }
  64. //是否跟目录
  65. $isroot = false;
  66. if(strpos($file->getKey(), '/') === false){
  67. $isroot = true;
  68. }
  69. //是否图片类型
  70. $isimg = false;
  71. if(in_array(fileExt($file->getKey()), array('jpg', 'jpeg', 'gif', 'png', 'bmp'))){
  72. $isimg = true;
  73. }
  74. ?>
  75. <div class="file-box">
  76. <div class="file">
  77. <span class="corner"></span>
  78. @if($isimg || ($pastdate && !$isroot))
  79. <div class="image">
  80. <img alt="image" class="img-responsive" src="{{ $img_path }}{{ $file->getKey() }}@198w">
  81. </div>
  82. @else
  83. <div class="icon">
  84. <i class="fa fa-file"></i>
  85. </div>
  86. @endif
  87. <div class="file-name">
  88. <input type="hidden" id="<?php echo trim($file->getETag(), '"'); ?>" value="{{ $img_path }}{{ $file->getKey()}}">
  89. <button type="button" class="btn btn-primary btn-xs copy-btn" value="<?php echo trim($file->getETag(), '"'); ?>">复制链接</button>
  90. @if($isimg || ($pastdate && !$isroot))
  91. &nbsp;&nbsp;&nbsp;&nbsp;
  92. <button type="button" class="btn btn-primary btn-xs" onclick="showImg('<?php echo trim($file->getETag(), '"'); ?>');">查看大图</button>
  93. @endif
  94. <br><br>
  95. @if($isroot)
  96. <div style="width:182px;height:32px;word-break:break-all;">{{ $file->getKey() }}</div>
  97. @else
  98. <div style="width:182px;height:32px;word-break:break-all;">{{ substr(strrchr($file->getKey(), '/'), 1) }}</div>
  99. @endif
  100. </div>
  101. </div>
  102. </div>
  103. @endforeach
  104. @endif
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <script type="text/javascript" src="/base/js/swfupload/swfupload.js?v={{config("sys.version")}}" ></script>
  111. <script type="text/javascript" src="/base/js/swfupload/swfupload.queue.js?v={{config("sys.version")}}" ></script>
  112. <script type="text/javascript" src="/base/js/swfupload/fileprogress.js?v={{config("sys.version")}}" ></script>
  113. <script type="text/javascript" src="/base/js/swfupload/handlers.js?v={{config("sys.version")}}" ></script>
  114. <script type="text/javascript">
  115. var loadlayer;
  116. var swfu = '';
  117. function initUploadControl(id, num, rename) {
  118. var settings = {
  119. flash_url : "/base/js/swfupload/swfupload.swf",
  120. post_params : {"PHPSESSID" : "<?php echo time(); ?>", 'rename' : rename, "elementid" : id, "_token" : "<?php echo csrf_token(); ?>", "position" : "ali", "folder" : "<?php echo trim(Request::input('folder'), '/'); ?>"},
  121. upload_url : "<?php echo U('Base.attachment.upload'); ?>",
  122. file_size_limit : "5 MB",
  123. file_types : "*.*",
  124. file_upload_limit: num,
  125. button_image_url : "/base/js/swfupload/select-button.png",
  126. button_placeholder_id : id,
  127. button_width : 65,
  128. button_height : 29,
  129. button_cursor: SWFUpload.CURSOR.HAND, //鼠标样式
  130. button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
  131. button_action : (num==1 ? SWFUpload.BUTTON_ACTION.SELECT_FILE : SWFUpload.BUTTON_ACTION.SELECT_FILES),
  132. swfupload_preload_handler : preLoad,
  133. swfupload_load_failed_handler : loadFailed,
  134. file_dialog_complete_handler : fileDialogComplete,
  135. file_queue_error_handler: fileQueueError,
  136. upload_start_handler: uploadStartCo,
  137. upload_error_handler : uploadErrorCo,
  138. upload_success_handler : uploadSuccessCo,
  139. upload_complete_handler : uploadCompleteCo,
  140. queue_complete_handler : queueuploadCompleteCo,
  141. file_dialog_complete_handler : fileDialogComplete,
  142. };
  143. swfu = new SWFUpload(settings);
  144. }
  145. initUploadControl("upload_more_file", 100, 0);
  146. initUploadControl("upload_single_file", 1, 1);
  147. //选择文件后提示信息
  148. function fileDialogComplete(selectedNum, queuedNum)
  149. {
  150. //选择并添加到上传队列的文件数大于0
  151. if (queuedNum > 0 && this.settings.file_upload_limit > 1) {
  152. //询问框
  153. var swfobj = this;
  154. parent.layer.confirm('注意:当前模式上传文件,同名文件将会被重命名!', {
  155. btn: ['确定','取消'], //按钮
  156. shade: false //不显示遮罩
  157. }, function(){
  158. parent.layer.closeAll();
  159. swfobj.startUpload();//开始上传
  160. }, function(){
  161. //swfobj.setButtonDisabled(true);//禁用上传按钮
  162. });
  163. }else{
  164. this.startUpload();//开始上传
  165. }
  166. }
  167. function uploadStartCo(){
  168. loadlayer = parent.layer.load(0, {
  169. shade: [0.5,'#fff'] //0.1透明度的白色背景
  170. });
  171. }
  172. function uploadErrorCo(data) {
  173. parent.layer.msg("500, 服务器内部错误", {icon: 2});
  174. }
  175. function fileQueueError(file, errorCode, message) {
  176. if (errorCode == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
  177. parent.layer.msg("上传队列中最多只能有3个文件等待上传", {icon: 2});
  178. return;
  179. }
  180. switch (errorCode) {
  181. case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
  182. parent.layer.msg("文件大小超出限制", {icon: 2});
  183. break;
  184. case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
  185. parent.layer.msg("文件类型受限", {icon: 2});
  186. break;
  187. case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
  188. parent.layer.msg("文件为空文件", {icon: 2});
  189. break;
  190. default:
  191. parent.layer.msg("加载入队列出错", {icon: 2});
  192. break;
  193. }
  194. }
  195. function uploadSuccessCo(data, srv) {
  196. var result = new Array();
  197. result = eval('('+srv+')');
  198. if(result.code == 200){
  199. }
  200. if(result.exception){
  201. parent.layer.msg(result.exception, {icon: 2});
  202. }
  203. }
  204. function queueuploadCompleteCo(num){
  205. parent.layer.confirm("本次共 "+num+" 个文件上传成功!", {
  206. btn: ['确定'] //按钮
  207. }, function(){
  208. parent.layer.closeAll();
  209. window.location.reload();
  210. });
  211. }
  212. function uploadCompleteCo(data, srv) {
  213. }
  214. //显示上传按钮
  215. $(function(){
  216. $('#new-upload-btn').show();
  217. });
  218. //复制链接
  219. $(".copy-btn").zclip({
  220. path: "/base/js/zclip/ZeroClipboard.swf",
  221. copy: function(){
  222. return $("#"+this.value).val();
  223. }
  224. });
  225. //查看大图
  226. function showImg(id){
  227. var imgSrc = $("#"+id).val();
  228. //页面层
  229. parent.layer.open({
  230. type: 1,
  231. skin: 'layui-layer-rim', //加上边框
  232. area: ['70%', '80%'], //宽高
  233. content: '<img style="display:block; margin:0 auto;" src="'+ imgSrc +'">'
  234. });
  235. }
  236. </script>
  237. @endsection