zoukankan      html  css  js  c++  java
  • 上传下载后台函数以及前端脚本(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();
        };
  • 相关阅读:
    C语言设计实验报告(第六次)
    C语言设计实验报告(第四次)
    C语言设计实验报告(第三次)
    C语言设计实验报告(第七次)
    C语言设计实验报告(第五次)
    翁恺B站练习题目(持续更新中~~~)
    壁纸
    C语言设计实验报告(第二次)
    C语言设计实验报告(第一次)
    SSM 项目实战
  • 原文地址:https://www.cnblogs.com/sybboy/p/5777116.html
Copyright © 2011-2022 走看看