• jQuery File Upload 上传组件的使用


    客户端

    <form id="fileupload" action="${ctx}/general/uploadgeneralfile" method="POST" enctype="multipart/form-data">
            <div class="row fileupload-buttonbar">
                <div class="col-lg-7">
                    <span class="btn btn-success fileinput-button">
                        <i class="glyphicon glyphicon-plus"></i>
                        <span>上传文档</span>
                        <input type="file" name="files[]" multiple>
                    </span>
                    <span class="fileupload-process"></span>
                </div>
                <div class="col-lg-5 fileupload-progress fade">
                    <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
                        <div class="progress-bar progress-bar-success" style="0%;"></div>
                    </div>
                    <div class="progress-extended">&nbsp;</div>
                </div>
            </div>
            <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
        </form>

    <script id="template-upload" type="text/x-tmpl">
    {% for (var i=0, file; file=o.files[i]; i++) { %}
        <tr class="template-upload fade">
            <td>
                <span class="preview"></span>
            </td>
            <td>
                <p class="name">{%=file.name%}</p>
                <strong class="error text-danger"></strong>
            </td>
            <td>
                <p class="size">Processing...</p>
                <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="0%;"></div></div>
            </td>
            <td>
                {% if (!i && !o.options.autoUpload) { %}
                    <button class="btn btn-primary start" disabled>
                        <i class="glyphicon glyphicon-upload"></i>
                        <span>上传</span>
                    </button>
                {% } %}
                {% if (!i) { %}
                    <button class="btn btn-warning cancel">
                        <i class="glyphicon glyphicon-ban-circle"></i>
                        <span>取消</span>
                    </button>
                {% } %}
            </td>
        </tr>
    {% } %}
    </script>
    <!-- The template to display files available for download -->
    <script id="template-download" type="text/x-tmpl">
    {% for (var i=0, file; file=o.files[i]; i++) { %}
     {% if (file.name) { %}
        <tr class="template-download fade">
            <td>
                <span class="preview">
                    {% if (file.thumbnailUrl) { %}
                        <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
                    {% } %}
                </span>
            </td>
            <td>
                <p class="name">
                    {% if (file.url) { %}
                        <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
                    {% } else { %}
                        <span>{%=file.name%}</span>
                    {% } %}
                </p>
            </td>
            <td>
                <span class="size">{%=o.formatFileSize(file.size)%}</span>
            </td>
            <td>
                {% if (file.deleteUrl) { %}
                    <button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
                        <i class="glyphicon glyphicon-trash"></i>
                        <span>删除</span>
                    </button>
                    <input type="checkbox" name="delete" value="1" class="toggle">
                {% } else { %}
                    <button class="btn btn-warning cancel">
                        <i class="glyphicon glyphicon-ban-circle"></i>
                        <span>取消</span>
                    </button>
                {% } %}
            </td>
        </tr>
    {% } %}
    {% } %}
    </script>

    $(function () {
        $('#fileupload').fileupload({
               success:function(data){    
               var str="<tr><td >上传成功<span><input type="hidden" value=""+data.attachFilePath+"" name="filepath"><input type="hidden" value=""+data.objctType+"" name="objctType"><input type="hidden" value=""+data.attachFileName+"" name="filename"></span></td>";
               str+="<td >"+data.fileName+"</td><td >"+data.size+"</td>";
               str+="<td><button class="btn btn-danger delete" onclick="deletefile(this)"><i class="glyphicon glyphicon-trash"></i> <span>删除</span></button></td></tr>"
               $('#successfile').append(str);
               }
        });
        
        $('#imageupload').fileupload({
               success:function(data){    
               var str="<tr><td >上传成功<span><input type="hidden" value=""+data.attachFilePath+"" name="filepath"><input type="hidden" value=""+data.objctType+"" name="objctType"><input type="hidden" value=""+data.attachFileName+"" name="filename"></span></td>";
               str+="<td >"+data.fileName+"</td><td >"+data.size+"</td>";
               str+="<td><button class="btn btn-danger delete" onclick="deletefile(this)"><i class="glyphicon glyphicon-trash"></i> <span>删除</span></button></td></tr>"
               $('#successfile').append(str);
               }
        });

    })

    function saveorggeneral(){
        //换届基本信息
        var orgId =$("#orgId").val();
        var number =$("#number").val();
        var tenure = $("#tenure").val();
        var time = $("#time").val();
        var style = $("#style").val();
        var shouldnum = $("#shouldnum").val();
        var actualnum = $("#actualnum").val();
        var remark = $("#remark").val();
        var str='';
        str += '{"orgId":"' + orgId
                    + '","number":"' + number
                    + '","tenure":"' + tenure
                    + '","time":"' + time
                    + '","style":"' + style
                    + '","shouldnum":"' + shouldnum
                    + '","actualnum":"' + actualnum
                    + '","remark":"' + remark
                    + '","attach":';
    //附件信息
    var attachstr='[';
    //循环长度
    var len =$ ("#successfile tr").length;
    $('#successfile tr').each(function(i, dom){
      var attachFileName=$(this).find("input[name='filename']").val();
      var attachFilePath=$(this).find("input[name='filepath']").val();
      var objctType=$(this).find("input[name='objctType']").val();
      attachstr += '{"attachFileName":"' + attachFileName
                    + '","objctType":"' + objctType
                    + '","attachFilePath":"' + attachFilePath+'"}';
                if (i < len - 1)
                {
                attachstr+=",";     
                }
    });
    attachstr+="]";    
    str+=attachstr+'}';    
            $.ajax({    
            url:'${ctx}/general/addpartygeneral',     
            type:'post',
            cache:false,
            data:{
          str : str,
            },
            error:function(){
               layer.msg('请按照提示正确填写!');      
            },     
            success:function(){    
            var url="${ctx}/general/listplus?orgid="+orgId;
            window.parent.loaddiv(url);
            var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
            parent.layer.close(index);
            }
        });
        }
    //删除文件
    function deletefile(obj){
    var filename=$(obj).parents('tr').find("input[name='filename']").val();
    var filepath=$(obj).parents('tr').find("input[name='filepath']").val();
    var path =filepath+"\"+filename;
    //ajax删除服务器文件
    $.ajax({    
            url:'${ctx}/file/deletefile',     
            type:'post',
            cache:false,
            data:{
          path : path,
            },
        });
    //移除tr
    $(obj).parents('tr').remove();
    }

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    服务器端

    //上传换届附件
            @RequestMapping(value = "/uploadgeneralfile", method = RequestMethod.POST)
            @ResponseBody
            public PartyGeneralManagementAttach uploadgeneralfile(HttpServletRequest request
                    ,@RequestParam(value = "orgid", required = false) Integer orgid)
                    throws IllegalStateException, IOException {
                 //换届附件信息
                PartyGeneralManagementAttach attach = uploadgeneral(request);
                attach.setObjctType(1);
                return attach;
            }

    private PartyGeneralManagementAttach uploadgeneral(HttpServletRequest request )
                    throws IOException {
                PartyGeneralManagementAttach attach =new PartyGeneralManagementAttach();
                // 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
                CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
                        request.getSession().getServletContext());
                // 检查form中是否有enctype="multipart/form-data"
                if (multipartResolver.isMultipart(request)) {
                    // 将request变成多部分request
                    MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
                    // 获取multiRequest 中所有的文件名
                    Iterator iter = multiRequest.getFileNames();
                    String newFileName = "";
                    // 设置保存路径为tomcat下的...
                    ServletContext context = request.getSession().getServletContext();
                    String relativePath = "/upload/";
                    String savePath = context.getRealPath(relativePath);
                    File f = new File(savePath);
                    // 创建文件夹
                    if (!f.exists()) {
                    f.mkdirs();
                    }
                    while (iter.hasNext()) {
                        // 一次遍历所有文件
                        MultipartFile file = multiRequest.getFile(iter.next()
                                .toString());
                        if (file != null) {
                            SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                            // 新文件名为原名+日期+随机数
                            newFileName =  df.format(new Date()) + "_"
                                    + new Random().nextInt(1000) + "." + file.getOriginalFilename();
                            // 上传
                            file.transferTo(new File(savePath, newFileName));
                            
                            attach.setAttachFileName(newFileName);
                            attach.setAttachFilePath(relativePath);//相对路径
                            attach.setFileName(file.getOriginalFilename());
                            //转换文件大小
                            String size = "0BT";
                            long fileS = file.getSize();
                              DecimalFormat dft = new DecimalFormat("#.00");
                                   if (fileS < 1024) {
                                       size = dft.format((double) fileS) + "BT";
                                   } else if (fileS < 1048576) {
                                       size = dft.format((double) fileS / 1024) + "KB";
                                   } else if (fileS < 1073741824) {
                                       size = dft.format((double) fileS / 1048576) + "MB";
                                   } else{
                                       size = dft.format((double) fileS / 1073741824) +"GB";
                                   }
                                   attach.setSize(size);
                        }
                    }
                }
                return attach;
            }

    /**
               * 根据组织id得到文件路径
               * title
               * 创建人:cjq  
               * 创建时间:2017年6月1日 下午4:27:34   
               * @param @param orgid
               * @param @return   
               * @return String
               */
              public static String getfilepath(Integer orgid,PartyInfoService partyinfoservice,String relativePath)
            {
                  
                  PartyOrganization org=partyinfoservice.selectOrgByid(orgid);
                  if(org!=null){
                      relativePath="/"+org.getOrgName()+relativePath;
                      if(!org.getId().equals(org.getParentid())){
                          relativePath =    getfilepath(org.getParentid(),partyinfoservice,relativePath);   //递归调用返回值时记得接收
                      }
                  }
                  return relativePath;
            }

    当能力支撑不了野心时,就该静下心来学习!
  • 相关阅读:
    mysql存储过程分库分表
    上取整与下取整的转换
    《windows内核安全与驱动开发》ctrl2cap中的ObReferenceObjectByName疑问
    JavaScript基础入门教程(六)
    Unicode中的BOM
    JavaScript基础入门教程(五)
    JavaScript基础入门教程(四)
    JavaScript基础入门教程(三)
    JavaScript基础入门教程(一)
    web及网络基础
  • 原文地址:https://www.cnblogs.com/1234cjq/p/6929375.html
Copyright © 2020-2023  润新知