• 上传下载后台函数以及前端脚本(webuploader) 备份


      1 import java.io.BufferedOutputStream;
      2 import java.io.IOException;
      3 import java.io.InputStream;
      4 import java.io.PrintWriter;
      5 import java.io.UnsupportedEncodingException;
      6 import java.net.URLEncoder;
      7 import java.util.HashMap;
      8 import java.util.List;
      9 import java.util.Map;
     10 import java.util.zip.ZipEntry;
     11 import java.util.zip.ZipOutputStream;
     12 
     13 import javax.mail.internet.MimeUtility;
     14 import javax.servlet.ServletOutputStream;
     15 import javax.servlet.http.HttpServletRequest;
     16 import javax.servlet.http.HttpServletResponse;
     17 
     18 import org.springframework.beans.factory.annotation.Autowired;
     19 import org.springframework.stereotype.Controller;
     20 import org.springframework.ui.Model;
     21 import org.springframework.web.bind.annotation.RequestMapping;
     22 import org.springframework.web.bind.annotation.RequestParam;
     23 import org.springframework.web.bind.annotation.ResponseBody;
     24 import org.springframework.web.multipart.MultipartFile;
     25 
     26 
     27 
     28 @Controller
     29 @RequestMapping("/commonUpload")
     30 public class CommonUploadContorller{
     31     
     32     @Autowired
     33     private CommonService centerCommonService;
     34     
     35     /**
     36      * 添加资料页
     37      * 
     38      * @return
     39      * @author guogf
     40      */
     41     @RequestMapping("/toUploadAttachment")
     42     public String toUploadAttachment(String blongId,String fileSource,Model model) {
     43         Map<String, Object> objMap = new HashMap<String, Object>();
     44         objMap.put("belongId", blongId);
     45         objMap.put("fileSource", fileSource);
     46         model.addAttribute("objMap", objMap);
     47         return "commonUpload/uploadAttachment";
     48     }
     49     
     50     @RequestMapping("/fileUpLoad")
     51     public String fileUpLoad(HttpServletRequest request,HttpServletResponse response,long belongId
     52             ,@RequestParam(defaultValue = "100") String fileSource, @RequestParam(value="file",required=false)MultipartFile file) {
     53         User currentUser = UserUtils.getUser();
     54         String attachmentId = centerCommonService.uploadAttachment(belongId,fileSource, file, currentUser);
     55         if(!"uploadError".equals(attachmentId)){
     56             try {
     57                 response.reset();
     58                 PrintWriter out = response.getWriter();
     59                 out.print("{"attachmentId" :"+ attachmentId+"}");
     60                 out.flush();
     61                 out.close();
     62             } catch (IOException e) {
     63                 // TODO Auto-generated catch block
     64                 e.printStackTrace();
     65             }
     66             return null;
     67         }else{
     68             return null;
     69         }
     70     }
     71     
     72     /**
     73      * 资料附件下载
     74      * @param files
     75      * @return
     76      * @author guogf
     77      */
     78     @RequestMapping("/downLoadAttachment")
     79     @ResponseBody
     80     public void downLoadAttachment(HttpServletRequest request,String attachId,HttpServletResponse response){
     81         FTPUtils ftpUtils = FTPUtils.getInstance();
     82         InputStream is = null;
     83         ServletOutputStream out;
     84         byte[] content = new byte[1024];
     85         String fileName = "";
     86         List<Attachment> attachList = centerCommonService.findAttList(attachId.split(","));
     87         if(attachList!=null && attachList.size()>1){//批量下载多个文件,先压缩,再下载
     88             try {
     89                 response.addHeader("Content-Disposition", "attachment; filename="+IdGen.getRandomName(6)+DateUtils.getNumberDateTime()+".zip");
     90                 ServletOutputStream sos=response.getOutputStream();
     91                 ZipOutputStream zipOut  = new ZipOutputStream(new BufferedOutputStream(sos)); 
     92                 int readLen = -1;
     93                 for(Attachment att : attachList){
     94                     ZipEntry entry = new ZipEntry(att.getFilePath()); 
     95                     zipOut.putNextEntry(entry);   
     96                     is = ftpUtils.retrieveFile(att.getFilePath().substring(0, att.getFilePath().lastIndexOf("/"))
     97                                     ,att.getFilePath().split("/")[att.getFilePath().split("/").length-1]);
     98                     if(is!=null){
     99                         while ((readLen = is.read(content, 0, 1024)) != -1) {
    100                             zipOut.write(content, 0, readLen);
    101                         }
    102                         is.close();   
    103                     }
    104                 }
    105                 zipOut.close();
    106             } catch (Exception e) {
    107                 e.printStackTrace();
    108             }
    109         }else if(attachList!=null && attachList.size()==1){//下载单个文件,直接下载
    110             Attachment att = attachList.get(0);
    111             fileName = att.getFileName();
    112             try {
    113                 response.setHeader("Content-Type", "application/octet-stream");
    114                 response.setHeader("X-Accel-Charset", "UTF-8");
    115                 response.setHeader("Content-Disposition", "attachment;" + encode(request, fileName));
    116                 is = ftpUtils.retrieveFile(att.getFilePath().substring(0, att.getFilePath().lastIndexOf("/"))
    117                         ,att.getFilePath().split("/")[att.getFilePath().split("/").length-1]);
    118                 out = response.getOutputStream();
    119                 int length = 0;
    120                 while ((length = is.read(content)) != -1) {
    121                     out.write(content, 0, length);
    122                 }
    123                 out.write(content);
    124                 out.flush();
    125                 out.close();
    126             } catch (Exception e) {
    127                 // TODO Auto-generated catch block
    128                 e.printStackTrace();
    129             }
    130         }
    131     }
    132     
    133     // IE与firefox下载区分
    134     private String encode(HttpServletRequest request, String realfileName) {
    135         String agent = request.getHeader("USER-AGENT").toLowerCase();
    136         try {
    137             String new_filename = URLEncoder.encode(realfileName, "UTF8");  
    138             // IE
    139             if (null != agent && -1 != agent.indexOf("msie")) {
    140                 realfileName = URLEncoder.encode(realfileName, "UTF8")
    141                         .replaceAll("\+", "%20");
    142                 realfileName ="filename="+ new String(realfileName.getBytes("GBK"),
    143                         "iso-8859-1");
    144                 // Firefox
    145             } 
    146          // Opera浏览器只能采用filename* 
    147             else if (null != agent && agent.indexOf("opera") != -1) 
    148             { 
    149                 realfileName = "filename*=UTF-8''" + new_filename; 
    150            } 
    151            // Safari浏览器,只能采用ISO编码的中文输出 
    152              else if (null != agent && agent.indexOf("safari") != -1 ) 
    153              { 
    154                  realfileName = "filename="" + new String(realfileName.getBytes("UTF-8"),"ISO8859-1") + """; 
    155              } 
    156              // Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出 
    157              else if (null != agent && agent.indexOf("applewebkit") != -1 ) 
    158               { 
    159                 new_filename = MimeUtility.encodeText(realfileName, "UTF8", "B"); 
    160                 realfileName = "filename="" + new_filename + """; 
    161               } 
    162              // FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出 
    163             else if (null != agent && -1 != agent.indexOf("mozilla")) {
    164 //                realfileName = MimeUtility
    165 //                        .encodeText(realfileName, "UTF8", "B");
    166                // realfileName = "filename=?UTF-8?B?" + (new String(Encodes.encodeBase64(realfileName.getBytes("UTF-8")))) + "?=";
    167                 realfileName = "filename*=UTF-8''" + new_filename;  
    168             }
    169         } catch (UnsupportedEncodingException e) {
    170             try {
    171                 realfileName = new String(realfileName.getBytes("UTF-8"),
    172                         "iso-8859-1");
    173             } catch (UnsupportedEncodingException e1) {
    174                 e1.printStackTrace();
    175             }
    176             e.printStackTrace();
    177         }
    178         return realfileName;
    179     }
    180 }
     var uploader;
        $(function(){
            //下面是文件上传的js操作
            var $ = jQuery,
            $list = $('#thelist'),
            $btn = $('#ctlBtn'),
            state = 'pending',
           
            uploader = WebUploader.create({
                // 不压缩image
                resize: false,
                // swf文件路径
                swf:  ctxStatic+'/WebUploader/Uploader.swf',
                // 文件接收服务端。
                server: ctx+'/commonUpload/fileUpLoad',
                // 选择文件的按钮。可选。
                // 内部根据当前运行是创建,可能是input元素,也可能是flash.
                pick:{
                    id:'#picker',
                    multiple :true
                },
                formData: {
                    belongId:$('#belongId').val(),
                    fileSource:$('#fileSource').val()
                }
            });
            // 当有文件添加进来的时候
            uploader.on( 'fileQueued', function( file ) {
                $list.append( '<div id="' + file.id + '" class="item">' +
                    '<h4 class="info">' + file.name + 
                    '<a id="delete_' + file.id + '" class="file_close" title="删除" href="javascript:void(0);" fileId="" />'+'</h4>' +
                    '<p class="state">等待上传...</p>' +
                '</div>' );
                $('#delete_'+ file.id).on('click',  function() {
                    if($(this).attr("fileId")!=''){
                        var attachmentIds = $("#attachmentIds").val();
                        var arrList = attachmentIds.split(',');
                        arrList.splice($.inArray($(this).attr("fileId"),arrList),1); 
                        $("#attachmentIds").val(arrList.join(','));
                    }
                    $('#'+file.id).remove();
                    uploader.removeFile( file );
                });
            });
            // 文件上传过程中创建进度条实时显示。
            uploader.on( 'uploadProgress', function( file, percentage ) {
                var $li = $( '#'+file.id ),
                    $percent = $li.find('.progress .progress-bar');
                // 避免重复创建
                if ( !$percent.length ) {
                    $percent = $('<div class="progress progress-striped active">' +
                      '<div class="progress-bar" role="progressbar" style=" 0%">' +
                      '</div>' +
                    '</div>').appendTo( $li ).find('.progress-bar');
                }
            
                $li.find('p.state').text('上传中');
            
                $percent.css( 'width', percentage * 100 + '%' );
            });
            uploader.on( 'uploadSuccess', function( file,response ) {
                var num = $('#attachmentIds').val();
                $('#attachmentIds').val(num+","+response.attachmentId);
                $( '#'+file.id ).find('p.state').text('已上传');
                $('#delete_'+ file.id).attr("fileId",response.attachmentId);
            });
            uploader.on( 'uploadError', function( file,reason ) {
                $( '#'+file.id ).find('p.state').text('上传出错');
            });
            uploader.on( 'uploadComplete', function( file ) {
                $( '#'+file.id ).find('.progress').fadeOut();
            });
            $btn.on( 'click', function() {
                if ( state === 'uploading' ) {
                    uploader.stop();
                } else {
                    uploader.upload();
                }
            });
            uploader.on( 'all', function( type ) {
                if ( type === 'startUpload' ) {
                    state = 'uploading';
                } else if ( type === 'stopUpload' ) {
                    state = 'paused';
                } else if ( type === 'uploadFinished' ) {
                    state = 'done';
                }
            
                if ( state === 'uploading' ) {
                    $btn.text('暂停上传');
                } else {
                    $btn.text('开始上传');
                }
            });
        });
        var deleteFile = function(id){
            var attachmentIds = $("#attachmentIds").val();
            var arrList = attachmentIds.split(',');
            arrList.splice($.inArray(id,arrList),1); 
            $("#attachmentIds").val(arrList.join(','));
            $('#file_lable_'+id).remove();
        };
  • 相关阅读:
    poj 2763 Housewife Wind
    hdu 3966 Aragorn's Story
    poj 1655 Balancing Act 求树的重心
    有上下界的网络流问题
    URAL 1277 Cops and Thieves 最小割 无向图点带权点连通度
    ZOJ 2532 Internship 网络流求关键边
    ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
    SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流
    怎么样仿写已知网址的网页?
    5-10 公路村村通 (30分)
  • 原文地址:https://www.cnblogs.com/sybboy/p/5777116.html
Copyright © 2020-2023  润新知