Layui 上传图片 限制数量 超出数量中断上传 带预览图 带删除按钮

Layui 上传文件限制数量

在网上看了好多相关的文章,各种不好使,反正就是限制不了。各种调用,都没办法较少代码的解决这个问题。下边分享我的办法。

功能图例:
多图上传----选中四张(程序限制上传三张)

程序上传三张后停止,上传第四张时提示 “图片数量达到上限”

以后再怎么传,都是报错,提示上传数量达到上限。

此时,删除其中两张图片,再重新选图时

此时,补齐了两张的数量,如果选多的,自动忽略掉,并提示数量超限

来吧,上源码,不含上传接口文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>示例演示</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- 注意:项目正式环境请勿引用该地址 -->
  <link href="layui/css/layui.css" rel="stylesheet">
  <style>
    div.item {
    width: 100px;
    height: 100px;
    background-repeat: no-repeat;
    background-size: auto 100px;
    background-position: center center;
    }
    .intro{}
    </style>
</head>
<body>

          
       
 
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 50px;">
  <legend>上传多张图片</legend>
</fieldset>
 
<div class="layui-upload">
  <button type="button" class="layui-btn" id="test2">多图片上传</button> 
  <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">预览图:<div class="layui-upload-list" id="demo2"></div>
 </blockquote>
</div>


<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
  <legend>拖拽上传</legend>
</fieldset> 
 
<div class="layui-upload-drag" id="test10">
  <i class="layui-icon"></i>
  <p>点击上传,或将文件拖拽到此处</p>
  <div class="layui-hide" id="uploadDemoView">
    <hr>
    <img src="" alt="上传成功后渲染" style="max-width: 196px">
  </div>
</div>
  
<form name="form11" id="form11">
  图片数量:<input type="text" name="count" id="count" value=0 readonly>
</form>
          
<!-- 注意:项目正式环境请勿引用该地址 -->
<script src="layui/layui.js"></script>

<script>
function getJsonLength(jsonData){
            var jsonLength = 0;
            for(var item in jsonData){
                jsonLength++;
            }
            return jsonLength;
        }


layui.use(['upload', 'element', 'layer'], function(){
  var $ = layui.jquery
  ,upload = layui.upload
  ,element = layui.element
  ,layer = layui.layer;
  
   
  //多图片上传
  upload.render({
    elem: '#test2'
    ,url: 'uploadsys/ajax_upload.asp' //此处配置你自己的上传接口即可
    ,multiple: true	//实现多个图片 多选的必要条件
    ,accept: 'images'	
    ,acceptMime: 'image/jpg,image/png,image/jpeg'
    ,exts: 'jpg|png|jpeg'
    ,auto: false	//此处为关键点,必须设置成不自动上传,以便choose里进行数量判断
    ,choose: function (obj) {
        obj.preview(function (index, file) {
            //在html代码中,form11.count,用于计数存图片数量
            if (form11.count.value>=3){	//设置最多上传三张,超过三张的,忽略掉。
              layer.msg("图片数量达到上限", { icon: 2, offset: "auto", time: 3000 });
              return false;
            }else{
              console.log(form11.count.value);	
              form11.count.value++;	
              obj.upload(index, file) //上传文件操作
            }
        });
    }
    
    ,done: function(res){
      console.log(res)
      img = new Image()
      img.src=res.data.src

      img.onload=function(){
      //console.log(img.width)
      
      if ($("button.intro").length<=3){ //仅限10张图片
        $('#demo2').append('<div style="display:inline-block;margin:5px; text-align:center;"><div style="width: 150px; height: 100px; background-repeat: no-repeat; background:url('+res.data.src+');background-size:auto 100px; background-position:center center;"><input type=hidden name=picaddr value="'+res.data.src+'"></div><button class="intro">刪除</button></div>')
      }else{
        console.log("图片数量达到上限!")
        layer.msg("图片数量达到上限!", { icon: 2, offset: "auto", time: 3000 });
        return false;
      }
      $("button.intro").click(function(){
          $(this).parent().remove()
          form11.count.value=$("button.intro").length;		//这是重点,判断“删除”按钮的个数,也就是图片的个数,赋值给form11.count,这个值是实际图片数量。
          //console.log($(this).parent())
      })
      }

      
    }
  });
  
  
  
  //拖拽上传
  upload.render({
    elem: '#test10'
    ,url: 'uploadsys/ajax_upload.asp' //此处配置你自己的上传接口即可
    ,done: function(res){
      layui.$('#uploadDemoView').removeClass('layui-hide').find('img').attr('src', res.data.src);
      console.log(res)
    }
  });
 
});


</script>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.上传图片 使用layui中的upload组件可以实现图片上传功能。 HTML代码: ```html <div class="layui-upload"> <button type="button" class="layui-btn" id="uploadBtn">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="preview"> <p id="uploadText"></p> </div> </div> ``` JavaScript代码: ```javascript layui.use(['upload', 'layer'], function(){ var upload = layui.upload; var layer = layui.layer; //执行实例 var uploadInst = upload.render({ elem: '#uploadBtn', //绑定元素 url: '/upload/', //上传接口 accept: 'images', //只允许上传图片 size: 1024, //限制上传文件大小,单位KB done: function(res){ //上传完毕回调 if(res.code == 0){ //上传成功 $('#preview').attr('src', res.data.url); $('#uploadText').html('上传成功'); }else{ //上传失败 layer.msg(res.msg, {icon: 2}); } }, error: function(){ //请求异常回调 layer.msg('上传失败', {icon: 2}); } }); }); ``` 2.删除片 在layui中,删除片可以使用Ajax请求后端接口进行删除操作。 HTML代码: ```html <div class="layui-upload"> <button type="button" class="layui-btn" id="uploadBtn">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="preview"> <p id="uploadText"></p> <button type="button" class="layui-btn layui-btn-danger" id="deleteBtn">删除片</button> </div> </div> ``` JavaScript代码: ```javascript layui.use(['upload', 'layer'], function(){ var upload = layui.upload; var layer = layui.layer; var imageUrl = ''; //执行实例 var uploadInst = upload.render({ elem: '#uploadBtn', //绑定元素 url: '/upload/', //上传接口 accept: 'images', //只允许上传图片 size: 1024, //限制上传文件大小,单位KB done: function(res){ //上传完毕回调 if(res.code == 0){ //上传成功 imageUrl = res.data.url; $('#preview').attr('src', imageUrl); $('#uploadText').html('上传成功'); }else{ //上传失败 layer.msg(res.msg, {icon: 2}); } }, error: function(){ //请求异常回调 layer.msg('上传失败', {icon: 2}); } }); //删除片 $('#deleteBtn').click(function(){ if(imageUrl){ //发送Ajax请求删除片 $.ajax({ type: 'post', url: '/deleteImage', data: { imageUrl: imageUrl }, success: function(res){ if(res.code == 0){ //删除成功 $('#preview').attr('src', ''); $('#uploadText').html(''); imageUrl = ''; }else{ //删除失败 layer.msg(res.msg, {icon: 2}); } }, error: function(){ //请求异常回调 layer.msg('删除失败', {icon: 2}); } }); }else{ layer.msg('还未上传图片', {icon: 2}); } }); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值