demo2.html 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>镜像站@功能演示二 - 上传组件</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  9. <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" tppabs="https://www.layui.com/layuiadmin/std/dist/layuiadmin/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" tppabs="https://www.layui.com/layuiadmin/std/dist/layuiadmin/style/admin.css" media="all">
  11. </head>
  12. <body>
  13. <div class="layui-card layadmin-header">
  14. <div class="layui-breadcrumb" lay-filter="breadcrumb">
  15. <a lay-href="">主页</a>
  16. <a><cite>组件</cite></a>
  17. <a><cite>上传组件</cite></a>
  18. <a><cite>功能演示二</cite></a>
  19. </div>
  20. </div>
  21. <div class="layui-fluid">
  22. <div class="layui-row layui-col-space15">
  23. <div class="layui-col-md12">
  24. <div class="layui-card">
  25. <div class="layui-card-header">高级应用:制作一个多文件列表</div>
  26. <div class="layui-card-body">
  27. <div class="layui-upload">
  28. <button type="button" class="layui-btn layui-btn-normal" id="test-upload-testList">选择多文件</button>
  29. <div class="layui-upload-list">
  30. <table class="layui-table">
  31. <colgroup>
  32. <col>
  33. <col width="150">
  34. <col width="260">
  35. <col width="150">
  36. </colgroup>
  37. <thead>
  38. <tr>
  39. <th>文件名</th>
  40. <th>大小</th>
  41. <th>上传进度</th>
  42. <th>操作</th>
  43. </tr>
  44. </thead>
  45. <tbody id="test-upload-demoList"></tbody>
  46. </table>
  47. </div>
  48. <button type="button" class="layui-btn" id="test-upload-testListAction">开始上传</button>
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. <div class="layui-col-md12">
  54. <div class="layui-card">
  55. <div class="layui-card-header">选完文件后不自动上传</div>
  56. <div class="layui-card-body">
  57. <div class="layui-upload">
  58. <button type="button" class="layui-btn layui-btn-normal" id="test-upload-change">选择文件</button>
  59. <button type="button" class="layui-btn" id="test-upload-change-action">开始上传</button>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. <div class="layui-col-md12">
  65. <div class="layui-card">
  66. <div class="layui-card-header">拖拽上传</div>
  67. <div class="layui-card-body">
  68. <div class="layui-upload-drag" id="test-upload-drag">
  69. <i class="layui-icon"></i>
  70. <p>点击上传,或将文件拖拽到此处</p>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="layui-col-md12">
  76. <div class="layui-card">
  77. <div class="layui-card-header">高级应用:制作一个多文件列表</div>
  78. <div class="layui-card-body">
  79. <div class="layui-upload">
  80. <button type="button" class="layui-btn layui-btn-normal" id="test-upload-testList">选择多文件</button>
  81. <div class="layui-upload-list">
  82. <table class="layui-table">
  83. <thead>
  84. <tr><th>文件名</th>
  85. <th>大小</th>
  86. <th>状态</th>
  87. <th>操作</th>
  88. </tr></thead>
  89. <tbody id="test-upload-demoList"></tbody>
  90. </table>
  91. </div>
  92. <button type="button" class="layui-btn" id="test-upload-testListAction">开始上传</button>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="layui-col-md12">
  98. <div class="layui-card">
  99. <div class="layui-card-header">绑定原始文件域</div>
  100. <div class="layui-card-body">
  101. <input type="file" name="file" id="test-upload-primary">
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <script src="../../../layuiadmin/layui/layui.js" tppabs="https://www.layui.com/layuiadmin/std/dist/layuiadmin/layui/layui.js"></script>
  108. <script>
  109. layui.config({
  110. base: '../../../layuiadmin/' //静态资源所在路径
  111. }).extend({
  112. index: 'lib/index' //主入口模块
  113. }).use(['index', 'upload', 'element'], function(){
  114. var $ = layui.jquery
  115. ,upload = layui.upload
  116. ,element = layui.element;
  117. //多文件列表示例
  118. var uploadListIns = upload.render({
  119. elem: '#test-upload-testList'
  120. ,elemList: $('#test-upload-demoList') //列表元素对象
  121. ,url: 'https://httpbin.org/post'
  122. ,accept: 'file'
  123. ,multiple: true
  124. ,number: 3
  125. ,auto: false
  126. ,bindAction: '#test-upload-testListAction'
  127. ,choose: function(obj){
  128. var that = this;
  129. var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
  130. //读取本地文件
  131. obj.preview(function(index, file, result){
  132. var tr = $(['<tr id="upload-'+ index +'">'
  133. ,'<td>'+ file.name +'</td>'
  134. ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
  135. ,'<td><div class="layui-progress" lay-filter="progress-demo-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
  136. ,'<td>'
  137. ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
  138. ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
  139. ,'</td>'
  140. ,'</tr>'].join(''));
  141. //单个重传
  142. tr.find('.demo-reload').on('click', function(){
  143. obj.upload(index, file);
  144. });
  145. //删除
  146. tr.find('.demo-delete').on('click', function(){
  147. delete files[index]; //删除对应的文件
  148. tr.remove();
  149. uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
  150. });
  151. that.elemList.append(tr);
  152. element.render('progress'); //渲染新加的进度条组件
  153. });
  154. }
  155. ,done: function(res, index, upload){ //成功的回调
  156. var that = this;
  157. //if(res.code == 0){ //上传成功
  158. var tr = that.elemList.find('tr#upload-'+ index)
  159. ,tds = tr.children();
  160. tds.eq(3).html(''); //清空操作
  161. delete this.files[index]; //删除文件队列已经上传成功的文件
  162. return;
  163. //}
  164. this.error(index, upload);
  165. }
  166. ,allDone: function(obj){ //多文件上传完毕后的状态回调
  167. console.log(obj)
  168. }
  169. ,error: function(index, upload){ //错误回调
  170. var that = this;
  171. var tr = that.elemList.find('tr#upload-'+ index)
  172. ,tds = tr.children();
  173. tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
  174. }
  175. ,progress: function(n, elem, e, index){
  176. element.progress('progress-demo-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
  177. }
  178. });
  179. //选完文件后不自动上传
  180. upload.render({
  181. elem: '#test-upload-change'
  182. ,url: '/upload/'
  183. ,auto: false
  184. //,multiple: true
  185. ,bindAction: '#test-upload-change-action'
  186. ,done: function(res){
  187. console.log(res)
  188. }
  189. });
  190. //拖拽上传
  191. upload.render({
  192. elem: '#test-upload-drag'
  193. ,url: '/upload/'
  194. ,done: function(res){
  195. console.log(res)
  196. }
  197. });
  198. //绑定原始文件域
  199. upload.render({
  200. elem: '#test-upload-primary'
  201. ,url: '/upload/'
  202. ,done: function(res){
  203. console.log(res)
  204. }
  205. });
  206. });
  207. </script>
  208. </body>
  209. </html>