美文网首页
bootstrap-fileinput

bootstrap-fileinput

作者: jia々 | 来源:发表于2019-10-24 15:27 被阅读0次

    1.代码案例下载:https://github.com/kartik-v/bootstrap-fileinput
    2.实例:
    1).上传

    
    
        <form enctype="multipart/form-data">
        <span>资料文件</span>
        
            <div class="file-loading">
                <input id="kv-explorer" type="file" multiple>
            </div>
            <br>
           <input type="hidden"  class="downloadPath"/>
        </form>
        <form class="layui-form layui-form-pane" action="">
     
     <div class="layui-form-item">
        <label class="layui-form-label">主题:</label>
        <div class="layui-input-block">
          <input type="text" name="title" autocomplete="off" placeholder="请输入主题" class="layui-input" lay-verify="required">
        </div>
      </div>
      
      <div class="layui-form-item">
        <label class="layui-form-label">创建人:</label>
        <div class="layui-input-block">
          <input type="text" name="sendName" th:value=${#httpServletRequest.getAttribute('username')} autocomplete="off" disabled="disabled" placeholder="请填写发送人" class="layui-input" lay-verify="required">
        </div>
      </div>
      
       <div class="layui-form-item">
        <label class="layui-form-label">项目名:</label>
        <div class="layui-input-block">
          <select name="demoPath"   lay-filter="projectName" >
            <option value="">请选择一个项目</option>
        </select>     
        </div>
      </div>
      
      <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">备注</label>
        <div class="layui-input-block">
          <textarea placeholder="请输入内容" class="layui-textarea" id="remark"></textarea>
        </div>
      </div>
      
      <div class="layui-form-item">
        <button class="layui-btn" lay-submit="" lay-filter="submitaddKbm">提交</button>
      </div>
    </form>
    
    <script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url:basePath+'/pm/listProject',
            dataType:'json',
            success:function(reg){
                for(var i=0;i<reg.objList.length;i++){
                    $("select[name='demoPath']").append("<option value='"+reg.objList[i].projectId+"'>"+reg.objList[i].projectName+"</option>");
                }
                layui.use('form', function(){
                      var form = layui.form;
                      form.render();
                      
                    });
            }
        })
        
        
    
        $("#kv-explorer").fileinput({
            'theme': 'explorer-fas',
            'uploadUrl': basePath+'/kbm/upload/' ,
            //overwriteInitial: false,
            enctype:'multipart/form-data',
            uploadAsync: true, //默认异步上传
            initialPreviewAsData: false,
            initialPreview: [], 
            initialPreviewConfig: [ ]
           
        });
        
        $("#kv-explorer").on("fileuploaded", function (event, data, previewId, index) {
            var response = data.response;
         //   alert(response.filePath);
             console.log(response.msg);
             var downpath=$(".downloadPath").val();
             $(".downloadPath").val(downpath+response.msg+",");
             console.log($(".downloadPath").val());
          
           
        });
        $("#kv-explorer").on("filesuccessremove", function (event, data, previewId, index) { 
              console.log("删除" +data);
              var extStart = data.lastIndexOf('_');
              var name=data.substring(extStart+1,data.length);
              
              var dataPath=  $(".downloadPath").val();
              var da=dataPath.split(",");
              var result="";
              for(var i=0;i<da.length;i++){
                  if(da[i].indexOf(name )== -1 && da[i]!=''){
                      console.log(da[i]);
                      result+=da[i]+",";
                  }
              }
              $(".downloadPath").val(result);
         });
        
    });
    
    layui.use(['form', 'layedit', 'laydate'], function(){
          var form = layui.form
          ,layer = layui.layer
            
          //监听提交
          form.on('submit(submitaddKbm)', function(data){
              
              var dataPath=$(".downloadPath").val();
              if(dataPath==null || dataPath==''){
                  layer.msg("文件未上传", {icon: 5});
                  return false;
              }else{
                  var title=$("input[name='title']").val();
                  var sendName=$("input[name='sendName']").val();
                  var remark=$("#remark").val();
                  var demoPath=$("select[name='demoPath']").val();
                  console.log(demoPath);
                $.ajax({
                    url:basePath+'/kbm/addKbm',
                    dataType:'json',
                    data:{
                        dataPath:dataPath,
                        title:title,
                        sendName:sendName,
                        remark:remark,
                        demoPath:demoPath
                    },
                    success:function(res){
                        if(res.flag){
                              //请求成功将路径放入隐藏域
                            
                            layer.msg('新建成功', {icon: 1});
                          }else{
                              //请求失败
                            layer.msg(res.msg, {icon: 5});
                          }
                    }
                    
                })
                return false;  
              }
              
          });
        
          
        });
    </script>
    
    

    2).页面回显

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="UTF-8">
    <title>知识管理编辑</title>
     <script th:src="@{/plugins/bootstrap/js/jquery.min.js}"></script>
        
         <!-- Fonts -->
        <link type='text/css' rel="stylesheet" th:href='@{/plugins/bootstrap/css/boostrap-font.css}' />
        <link type='text/css' rel="stylesheet" th:href='@{/plugins/bootstrap/css/boostrap-font-one.css}' />
        <!-- CSS Libs -->
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/bootstrap-3.3.4.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/font-awesome.min.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/animate.min.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/bootstrap-switch.min.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/checkbox3.min.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/jquery.dataTables.min.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/dataTables.bootstrap.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/bootstrap/css/select2.min.css}" />
        
        <link rel="stylesheet" th:href="@{/layui/css/layui.css}"  media="all">
        <link th:href="@{/css/fileinput.css}" media="all" rel="stylesheet" type="text/css"/>
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" crossorigin="anonymous">
        <link th:href="@{/js/bootstrap-fileinput/themes/explorer-fas/theme.css}" media="all" rel="stylesheet" type="text/css"/>
         <link type="text/css" rel="stylesheet" th:href="@{/plugins/lib/css/style.css}" />
        <link type="text/css" rel="stylesheet" th:href="@{/plugins/lib/css/themes/flat-blue.css}" />
        
        <script type="text/javascript" th:src="@{/plugins/bootstrap/js/bootstrap.min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/bootstrap-growl.min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/bootstrap-switch.min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/jquery/js/jquery.datetimepicker.full.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/md5.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/jquery.matchHeight-min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/jquery.dataTables.min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/dataTables.bootstrap.min.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/bootstrap/js/select2.full.min.js}"></script>
    <script type="text/javascript" th:src="@{/js/rootPath.js}"></script>
    <script type="text/javascript" th:src="@{/plugins/lib/js/app.js}"></script>
    
    <script th:src="@{/layui/layui.js}"></script>
    
    <script th:src="@{/js/bootstrap-fileinput/js/plugins/piexif.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/js/plugins/sortable.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/js/fileinput.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/js/locales/fr.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/js/locales/es.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/themes/fas/theme.js}" type="text/javascript"></script>
    <script th:src="@{/js/bootstrap-fileinput/themes/explorer-fas/theme.js}" type="text/javascript"></script>
    <link rel="stylesheet" th:href="@{/layui/css/layui.css}"/>
       
    </head>
    <body>
    
        <form enctype="multipart/form-data">
        <span>资料文件</span>
        
            <div class="file-loading">
               <input id="kv-explorer" type="file" multiple>
            </div>
            <br>
           <input type="hidden"  class="downloadPath"/>
        </form>
        
        <form class="layui-form layui-form-pane" action="">
        <div class="layui-form-item">
        <label class="layui-form-label">发送人:</label>
        <div class="layui-input-block">
          <input type="text" name="sendName" disabled="disabled" autocomplete="off" placeholder="请填写发送人" class="layui-input" >
        </div>
      </div>
      
      <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">备注</label>
        <div class="layui-input-block">
          <textarea placeholder="请输入内容" class="layui-textarea" id="remark"></textarea>
        </div>
      </div>
      
      <div class="layui-form-item layui-form-text">
        <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">更新记录内容:</label>
        <div class="layui-input-block">
          <textarea placeholder="请输入内容" class="layui-textarea" id="updateContent"></textarea>
        </div>
      </div>
      </div>
        <div class="layui-form-item">
        <button class="layui-btn" lay-submit="" lay-filter="updateKbm">提交</button>
      </div>
        </form>
    </body>
    <script type="text/javascript">
    $(document).ready(function () {
    var kbmId=GetQueryString("kbmId");
    var initprev = new Array(); 
    
    $.ajax({
        url:basePath+'/kbm/previewImg',
        dataType:'json',
        data:{
            kbmId:kbmId
        },success:function(data){
            var initPreviewConfig = new Array();  
            
            if(data[0]!=null){
                for(var i=0;i<data.length;i++){
                    var extStart = data[i].lastIndexOf('.');
                    var namestart=data[i].lastIndexOf('\\');
                    
                    var name=data[i].substring(namestart+1,data[i].length);
                    var ext = data[i].substring(extStart+1, data[i].length).toUpperCase();
                    
                    if(ext!='JPG'&&ext!='PNG'&&ext!='BMP'&&ext!='GIF'&&ext!='JPE'){
                        console.log(ext)
                        initPreviewConfig.push({type:ext, size: 8000, caption:name,url:basePath+'/integratenManaged/delFile', key: data[i], downloadUrl:data[i]});
                    }else{
                        initPreviewConfig.push({caption: name, size: 762980,url:basePath+'/integratenManaged/delFile', key:data[i], downloadUrl:data[i]});
                    }
                   
                }
            }
             $("#kv-explorer").fileinput({
                    'theme': 'explorer-fas',
                    'uploadUrl': basePath+'/kbm/upload/' ,
                    //overwriteInitial: false,
                    enctype:'multipart/form-data',
                    uploadAsync: true, //默认异步上传             
                    showPreview :true,  //是否显示预览
                    showRemove :true, //显示移除按钮
                    showDownload:true,
                    overwriteInitial:false,//是否希望覆盖初始预览内容和标题设置
                    initialPreview: data,
                    initialPreviewAsData: true, // defaults markup  
                    initialPreviewConfig: initPreviewConfig,
                })
             
                $("#kv-explorer").on("fileuploaded", function (event, data, previewId, index) {
                    var response = data.response;
                 //   alert(response.filePath);
                     console.log(response.msg);
                     var downpath=$(".downloadPath").val();
                     $(".downloadPath").val(downpath+response.msg+",");
                     console.log($(".downloadPath").val());
                  
                   
                });
    
    
             $('#kv-explorer').on('filepredelete', function(event, key) {  
                 console.log("删除" +key);
                 var dataPath=  $(".downloadPath").val();
                  var da=dataPath.split(",");
                  
                  var nameStart = key.lastIndexOf('\\');
                  var name=key.substring(nameStart+1,key.length);
                  
                  var result="";
                  for(var i=0;i<da.length;i++){
                      if(da[i].indexOf(name)== -1 && da[i]!=''){
                          console.log(da[i]);
                          result+=da[i]+",";
                      }
                  }
                  $(".downloadPath").val(result);
             });  
             $("#kv-explorer").on("filesuccessremove", function (event, data, previewId, index) { 
                  console.log("删除" +data);
                  var extStart = data.lastIndexOf('_');
                  var name=data.substring(extStart+1,data.length);
                  
                  var dataPath=  $(".downloadPath").val();
                  var da=dataPath.split(",");
                  var result="";
                  for(var i=0;i<da.length;i++){
                      if(da[i].indexOf(name )== -1 && da[i]!=''){
                          console.log(da[i]);
                          result+=da[i]+",";
                      }
                  }
                  $(".downloadPath").val(result);
             });
            
    
            
        }
    })
    console.log("初始化"+initprev);
    
        
    });
    
    
    </script>
    <script th:src="@{/layui/layui.js}"></script>
    <script type="text/javascript" th:inline="none">
    var kbmId=GetQueryString("kbmId");
    $(function(){
        $.ajax({
            url:basePath+'/kbm/viewKbm',
            dataType:'json',
            data:{
                kbmId:kbmId
            },
            success:function(reg){
                var date=reg.obj;
                
                $("input[name='sendName']").val(date.sendName);
                $("#remark").val(date.remark);
                $(".downloadPath").val(date.dataPath);
                
                console.log(date.dataPath);
                
            }
        })
    }) 
    layui.use(['form', 'layedit', 'laydate'], function(){
          var form = layui.form
          ,layer = layui.layer
            
          
          //监听提交
          form.on('submit(updateKbm)', function(data){
              var dataPath=$(".downloadPath").val();
              var title=$("input[name='title']").val();
              var sendName=$("input[name='sendName']").val();
              var remark=$("#remark").val();
              var updateContent=$("#updateContent").val();
            $.ajax({
                url:basePath+'/kbm/editKbm',
                dataType:'json',
                data:{
                    dataPath:dataPath,
                    title:title,
                    sendName:sendName,
                    remark:remark,
                    updateContent:updateContent,
                    kbmId:kbmId
                },
                success:function(res){
                    if(res.flag){
                          //请求成功将路径放入隐藏域
                        
                        layer.msg('更新成功', {icon: 1});
                      }else{
                          //请求失败
                        layer.msg(res.msg, {icon: 5});
                      }
                }
                
            })
            return false;
          });
        
          
        });
    
    </script>
    </html>
    

    3)编辑
    后台对比接口

    Map<String, List<String>> map = ContrastTool.contrastPath(oldkbm.getDataPath(), kbm.getDataPath());
    
       public static Map<String, List<String>> contrastPath(String oldPath, String newPath) {
            Map<String, List<String>> map = new HashMap<String, List<String>>();
    
            List<String> add = new ArrayList<String>();
            List<String> del = new ArrayList<String>();
            List<String> unalt = new ArrayList<String>();
    
            String[] oldPathArr = oldPath.split(",");
            String[] newPathArr = newPath.split(",");
    
            List<String> oldlist = new ArrayList<String>();
            List<String> newlist = new ArrayList<String>();
            for (String oldPathStr : oldPathArr) {
                oldlist.add(oldPathStr);
            }
            for (String newPathStr : newPathArr) {
                newlist.add(newPathStr);
    
            }
    
            //如果newPath里面有old没有的则是新增的
            for (String newstr : newlist) {
                if (!oldlist.contains(newstr) && !add.contains(newstr)) {
                    add.add(newstr);
                }
                if (oldlist.contains(newstr) && !unalt.contains(newstr)) {
                    unalt.add(newstr);
                }
    
            }
            map.put("add", add);
            map.put("unalt", unalt);
            //如果old有,new没有的则是删除的
            for (String old : oldlist) {
                if (!newlist.contains(old) && !del.contains(old)) {
                    del.add(old);
                }
    
            }
            map.put("del", del);
            return map;
        }
    

    相关文章

      网友评论

          本文标题:bootstrap-fileinput

          本文链接:https://www.haomeiwen.com/subject/ksfdvctx.html