mirror of
				https://gitee.com/layui/layui.git
				synced 2025-10-26 02:39:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			349 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			349 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | ||
| <html>
 | ||
| <head>
 | ||
| <meta charset="utf-8">
 | ||
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 | ||
| <title>上传组件 - layui</title>
 | ||
| 
 | ||
| <link rel="stylesheet" href="../src/css/layui.css">
 | ||
| 
 | ||
| <style>
 | ||
| body{padding: 50px 100px;}
 | ||
| .layui-upload-img{width: 92px; height: 92px; margin: 0 10px 10px 0;}
 | ||
| hr{margin: 30px 0;}
 | ||
| </style>
 | ||
| </head>
 | ||
| <body>
 | ||
| 
 | ||
| <div class="layui-upload">
 | ||
|   <button type="button" class="layui-btn" id="test1" name="123">上传图片</button>
 | ||
|   
 | ||
|   <div class="layui-upload-list">
 | ||
|     <img class="layui-upload-img" src="" id="demo1">
 | ||
|     <p id="demoText"></p>
 | ||
|   </div>
 | ||
| </div>
 | ||
| 
 | ||
| <div class="layui-progress layui-progress-big" lay-showPercent="yes"  lay-filter="demo">
 | ||
|   <div class="layui-progress-bar" lay-percent=""></div>
 | ||
| </div>
 | ||
| 
 | ||
| 
 | ||
| <hr>
 | ||
| 
 | ||
| <div class="layui-upload">
 | ||
|   <button type="button" class="layui-btn" id="test2">多图片上传</button> 
 | ||
|   <div class="layui-upload-list" id="demo2"></div>
 | ||
| </div>
 | ||
| 
 | ||
| <hr>
 | ||
| 
 | ||
| <div class="layui-upload">
 | ||
|   <button type="button" class="layui-btn layui-btn-normal" id="testList">选择多文件</button> 
 | ||
|   <div class="layui-upload-list">
 | ||
|     <table class="layui-table">
 | ||
|       <thead>
 | ||
|         <th>文件名</th>
 | ||
|         <th>大小</th>
 | ||
|         <th>上传进度</th>
 | ||
|         <th>操作</th>
 | ||
|       </thead>
 | ||
|       <tbody id="demoList"></tbody>
 | ||
|     </table>
 | ||
|   </div>
 | ||
|   <button type="button" class="layui-btn" id="testListAction">开始上传</button>
 | ||
| </div>
 | ||
| 
 | ||
| <hr>
 | ||
| 
 | ||
| <div class="layui-btn-container">
 | ||
|   <button type="button" class="layui-btn test333" lay-data="{size:10,url:'a'}" id="test3"><i class="layui-icon"></i>上传文件</button>
 | ||
|   <button type="button" class="layui-btn layui-btn-primary test333" lay-data="{size:20,url:'b'}" id="test33"><i class="layui-icon"></i>换个样式</button>
 | ||
| 
 | ||
|   <button type="button" class="layui-btn" id="test4"><i class="layui-icon"></i>上传视频</button>
 | ||
|   <button type="button" class="layui-btn" id="test5"><i class="layui-icon"></i>上传音频</button>
 | ||
| </div>
 | ||
| 
 | ||
| <hr>
 | ||
| 
 | ||
| <div class="layui-btn-container">
 | ||
|   <button class="layui-btn testm" lay-data="{url: '/a/'}">参数设在元素上</button>
 | ||
|   <button class="layui-btn testm" lay-data="{url: '/b/', accept: 'file',size:5}">参数设在元素上</button>
 | ||
| </div>
 | ||
| 
 | ||
| <hr>
 | ||
| 
 | ||
| <div class="layui-btn-container">
 | ||
|   <button type="button" class="layui-btn layui-btn-normal" id="test6">选择文件</button>
 | ||
|   <button type="button" class="layui-btn" id="test7">开始上传</button>
 | ||
| </div>
 | ||
| 
 | ||
| <hr><br>
 | ||
| 
 | ||
| <div class="layui-upload-drag" id="test8">
 | ||
|   <i class="layui-icon"></i>
 | ||
|   <p>点击上传,或将文件拖拽到此处</p>
 | ||
| </div>
 | ||
| 
 | ||
| <hr><br>
 | ||
| 
 | ||
| 绑定原始文件域:<input type="file" name="file" id="test9">
 | ||
| 
 | ||
| <script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.6.8/layui.js"></script>
 | ||
| <script>
 | ||
| layui.use(['upload', 'element'], function(){
 | ||
|   var $ = layui.jquery
 | ||
|   ,upload = layui.upload
 | ||
|   ,element = layui.element;
 | ||
| 
 | ||
|   var uploadInst = upload.render({
 | ||
|     elem: '#test1'
 | ||
|     ,url: 'https://httpbin.org/post'
 | ||
|     //,size: 2000 //限制文件大小,单位 KB
 | ||
|     //,accept: 'file'
 | ||
|     ,method: 'get'
 | ||
|     ,fileAccept: 'image/*'
 | ||
|     ,exts: "jpg|png|gif|bmp|jpeg|pdf"
 | ||
|     ,data: { //额外参数
 | ||
|       a: 1
 | ||
|       ,b: function(){
 | ||
|         return 2
 | ||
|       }
 | ||
|     }
 | ||
|     ,choose: function(obj){
 | ||
|       console.log('choose', obj);
 | ||
|     }
 | ||
|     ,before: function(obj){
 | ||
|       //预读本地文件示例,不支持ie8
 | ||
|       obj.preview(function(index, file, result){
 | ||
|         $('#demo1').attr('src', result); //图片链接(base64)
 | ||
|       });
 | ||
|       
 | ||
|       return;
 | ||
|       layer.msg('不允许上传')
 | ||
|       return false;
 | ||
|     }
 | ||
|     ,done: function(res, index){
 | ||
|     
 | ||
|       //如果上传失败
 | ||
|       if(res.code > 0){
 | ||
|         return layer.msg('上传失败');
 | ||
|       }
 | ||
|       //上传成功
 | ||
|       console.log(res, index);
 | ||
|     }
 | ||
|     ,error: function(index, upload){
 | ||
|       this.item.html('重选上传');
 | ||
|       
 | ||
|       //演示失败状态,并实现重传
 | ||
|       var demoText = $('#demoText');
 | ||
|       demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
 | ||
|       demoText.find('.demo-reload').on('click', function(){
 | ||
|         uploadInst.upload();
 | ||
|       });
 | ||
|       
 | ||
|       element.progress('demo', '0%');
 | ||
|     }
 | ||
|     ,progress: function(n, elem, res, index){
 | ||
|       console.log(n + '%', elem, res, index); //获取进度百分比
 | ||
|       element.progress('demo', n + '%'); //可配合 layui 进度条元素使用
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   //重置上述 upload 实例
 | ||
|   uploadInst.reload({
 | ||
|     name:'avatar'
 | ||
|     ,accept: 'images' //只允许上传图片
 | ||
|     ,acceptMime: 'image/*' //只筛选图片
 | ||
|     //,size: 2
 | ||
|   });
 | ||
|   
 | ||
|   // 演示多图片上传
 | ||
|   upload.render({
 | ||
|     elem: '#test2'
 | ||
|     ,url: 'https://httpbin.org/post'
 | ||
|     ,multiple: true
 | ||
|     ,accept: 'images'
 | ||
|     ,number: 3 //同时上传的数量
 | ||
|     ,size: 1024
 | ||
|     ,before: function(obj){
 | ||
|       //预读本地文件示例,不支持ie8
 | ||
|       obj.preview(function(index, file, result){
 | ||
|         $('#demo2').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img">')
 | ||
|       });
 | ||
| 
 | ||
|       //this.files = obj.pushFile();
 | ||
|     }
 | ||
|     ,done: function(res, index){
 | ||
|       //上传完毕
 | ||
|       //console.log(this.files)
 | ||
|     }
 | ||
|     ,allDone: function(obj){
 | ||
|       console.log(obj)
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   //演示多文件列表
 | ||
|   var demoListView = $('#demoList');
 | ||
|   var uploadListIns = upload.render({
 | ||
|     elem: '#testList'
 | ||
|     ,url: 'https://httpbin.org/post'
 | ||
|     ,accept: 'file'
 | ||
|     ,multiple: true
 | ||
|     ,number: 3
 | ||
|     ,auto: false
 | ||
|     ,bindAction: '#testListAction'
 | ||
|     ,size: 30
 | ||
|     ,choose: function(obj){   
 | ||
|       var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
 | ||
|       //读取本地文件
 | ||
|       obj.preview(function(index, file, result){        
 | ||
|         var tr = $(['<tr id="upload-'+ index +'">'
 | ||
|           ,'<td>'+ file.name +'</td>'
 | ||
|           ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
 | ||
|           ,'<td><div class="layui-progress" lay-filter="progress-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
 | ||
|           ,'<td>'
 | ||
|             ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
 | ||
|             ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
 | ||
|           ,'</td>'
 | ||
|         ,'</tr>'].join(''));
 | ||
|         
 | ||
|         //单个重传
 | ||
|         tr.find('.demo-reload').on('click', function(){
 | ||
|           obj.upload(index, file);
 | ||
|         });
 | ||
|         
 | ||
|         //删除
 | ||
|         var that = this;
 | ||
|         tr.find('.demo-delete').on('click', function(){
 | ||
|           console.log(files, index);
 | ||
|           delete files[index]; //删除对应的文件
 | ||
|           tr.remove();
 | ||
|           uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
 | ||
|         });
 | ||
|         
 | ||
|         demoListView.append(tr);
 | ||
|         
 | ||
|         element.render('progress');
 | ||
|       });
 | ||
|     }
 | ||
|     ,done: function(res, index, upload){
 | ||
|       //if(res.code == 0){ //上传成功
 | ||
|         var tr = demoListView.find('tr#upload-'+ index)
 | ||
|         ,tds = tr.children();
 | ||
|         tds.eq(3).html(''); //清空操作
 | ||
|         delete this.files[index]; //删除文件队列已经上传成功的文件
 | ||
|         return;
 | ||
|       //}
 | ||
|       this.error(index, upload);
 | ||
|     }
 | ||
|     ,allDone: function(obj){
 | ||
|       console.log(obj)
 | ||
|     }
 | ||
|     ,error: function(index, upload){
 | ||
|       var tr = demoListView.find('tr#upload-'+ index)
 | ||
|       ,tds = tr.children();
 | ||
|       tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
 | ||
|     }
 | ||
|     ,progress: function(n, elem, e, index){
 | ||
|       console.log(n);
 | ||
|       element.progress('progress-'+ index, n + '%'); //进度条
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
| 
 | ||
|   upload.render({
 | ||
|     elem: '.test333'
 | ||
|     ,url: 'a'
 | ||
|     ,accept: 'file'
 | ||
|     ,before: function(obj){
 | ||
|       console.log(this.item);
 | ||
|     }
 | ||
|     ,done: function(res){
 | ||
|       console.log(res)
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   upload.render({
 | ||
|     elem: '.testm'
 | ||
|     ,done: function(res, index, upload){
 | ||
|       //获取当前触发上传的元素,一般用于 elem 绑定 class 的情况,注意:此乃 layui 2.1.0 新增
 | ||
|       var item = this.item;
 | ||
|     }
 | ||
|   })
 | ||
|   
 | ||
|   /*
 | ||
|   upload.render({
 | ||
|     elem: '#test33'
 | ||
|     ,url: ''
 | ||
|     ,accept: 'file'
 | ||
|     ,done: function(res){
 | ||
|       console.log(res)
 | ||
|     }
 | ||
|   });*/
 | ||
|   
 | ||
|   upload.render({
 | ||
|     elem: '#test4'
 | ||
|     ,url: ''
 | ||
|     ,accept: 'video'
 | ||
|     ,done: function(res){
 | ||
|       console.log(res)
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   upload.render({
 | ||
|     elem: '#test5'
 | ||
|     ,url: ''
 | ||
|     ,accept: 'audio'
 | ||
|     ,done: function(res){
 | ||
|       console.log(res)
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   
 | ||
|   //手动上传
 | ||
|   upload.render({
 | ||
|     elem: '#test6'
 | ||
|     ,url: ''
 | ||
|     ,auto: false
 | ||
|     //,multiple: true
 | ||
|     ,bindAction: '#test7'
 | ||
|     ,choose: function(obj){   
 | ||
|       var that = this;
 | ||
|       obj.preview(function(index, file){
 | ||
|         that.elem.after('<span class="layui-inline layui-upload-choose">'+ file.name +'</span>');
 | ||
|         console.log(file.name);
 | ||
|         //obj.resetFile(index, file, '123.jpg');
 | ||
|       });
 | ||
|     }
 | ||
|     ,before: function(){
 | ||
|       console.log(345);
 | ||
|     }
 | ||
|     ,done: function(res){
 | ||
|       console.log(res);
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   upload.render({
 | ||
|     elem: '#test8'
 | ||
|     ,url: 'https://httpbin.org/post'
 | ||
|     ,done: function(res){
 | ||
|       console.log(res);
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   upload.render({
 | ||
|     elem: '#test9'
 | ||
|     ,url: ''
 | ||
|     ,done: function(res){
 | ||
|       console.log(res);
 | ||
|     }
 | ||
|   });
 | ||
|   
 | ||
|   
 | ||
|   
 | ||
| });
 | ||
| </script>
 | ||
| </body>
 | ||
| </html>
 | 
