lease_atm_batch_dl.lsc 3.69 KB
Newer Older
Spencer Chang's avatar
Spencer Chang committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
    <a:init-procedure>
        <s:server-script><![CDATA[
            importPackage(java.util.zip);
            importPackage(java.io);
            
            /* importPackage(java.io);
             importPackage(org.apache.tools.zip);    */ /*可以传入参数*/
            
            function getdate() {
                var now = new Date()
                y = now.getFullYear()
                m = now.getMonth() + 1
                d = now.getDate()
                m = m < 10 ? "0" + m : m
                d = d < 10 ? "0" + d : d
                return y + "" + m + "" + d
            }
            
            function writeFile(zos, fn, fp) {
                var ze = new ZipEntry(fn);
                //zos.setEncoding("UTF-8");//如果是org.apache.tools.zip需要追加字符集
                zos.putNextEntry(ze);
                var fis = new FileInputStream(fp);
                var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
                var len = -1;
                while ((len = fis.read(b)) != -1) {
                    zos.write(b, 0, len);
                }
                fis.close();
            }
            
            $ctx["__request_type__"] = 'file'; //to indicate this request is not a JSON_REQUEST
            var resp = $ctx['_instance.javax.servlet.http.HttpServletResponse'];
            resp.setHeader("Pragma", "No-cache");
            resp.setHeader("Cache-Control", "no-cache, must-revalidate");
            var date = new Date();
            var date_str = getdate();
            //var date_str = date.getFullYear()+''+(date.getMonth()<9:('0'+date.getMonth()+1)?(date.getMonth()+1))+''+date.getDate();
            var doc_code = $ctx.parameter.doc_code;
            var filename = doc_code + '-' + date_str + ".zip"
            resp.setHeader("Content-disposition", "attachment; filename=" + filename);
            resp.setDateHeader("Expires", 0);
            resp.setContentType("application/x-msdownload");
            var zos = new ZipOutputStream(resp.getOutputStream());
            try {
48 49 50 51 52
            if ($ctx.parameter.group_flag=='Y'){
            var attachment_batch_dl = $bm('batch_download.lease_atm_batch_dl_group');
            }else{
              var attachment_batch_dl = $bm('batch_download.lease_atm_batch_dl');
            }
Spencer Chang's avatar
Spencer Chang committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
                var result = attachment_batch_dl.queryAsMap();
                var arr = result.getChildren();
                var file_exist_list = {};
                for (var i = 0;i < arr.length;i++) {
                    var f = arr[i];
                    if (f.file_path && !file_exist_list[f.file_name]) {
                        writeFile(zos, f.file_name, f.file_path);
                        file_exist_list[f.file_name] = 1;
                    } else {
                        file_exist_list[f.file_name] = file_exist_list[f.file_name] * 1 + 1;
                        var last_index = f.file_name.lastIndexOf(".");
                        var temp_exists_file_name = f.file_name.substr(0, last_index);
                        var temp_exists_file_type = f.file_name.substr(last_index, f.file_name.length);
                        temp_exists_file_name = temp_exists_file_name + '-' + file_exist_list[f.file_name] + temp_exists_file_type;
                        writeFile(zos, temp_exists_file_name, f.file_path);
                    }
                }
            } catch (e) {
                var logger = $logger("server-script");
                logger.severe(e.message)
            }
            zos.close();
        ]]></s:server-script>
    </a:init-procedure>
</a:service>