程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP 多個文件打包下載代碼

JSP 多個文件打包下載代碼

編輯:關於JSP


    現把該程序主要代碼貼下,供大家需要的時候參考下:  
     

    <%@page import="java.util.*,  
    java.net.*,  
    java.text.*,  
    java.util.zip.*,  
    java.io.*" %>  
    <%!  
    static Vector expandFileList(String[] files, boolean inclDirs){  
    Vector v = new Vector();  
    if (files == null) return v;  
    for (int j=0; j < files.length; i++) v.add (new File(URLDecoder.decode(files[j])));  
    for (int i=0; i < v.size(); i++){  
    File f = (File) v.get(i);  
    if (f.isDirectory()){  
    File[] fs = f.listFiles();  
    for (int n = 0; n < fs.length; n++) v.add(fs[n]);  
    if (!inclDirs){  
    v.remove(i);  
    i--;  
    }  
    }  
    }  
    return v;  
    }  
    class Writer2Stream extends OutputStream{  
    Writer out;  
    Writer2Stream (Writer w){  
    super();  
    out = w;  
    }  
    public void write(int i) throws IOException{  
    out.write(i);  
    }  
    public void write(byte[] b) throws IOException{  
    for (int j=0;j<b.length;j++){  
    int n=b[j];  
    //Convert byte to ubyte  
    n=((n>>>4)&0xF)*16+(n&0xF);  
    out.write (n);  
    }  
    }  
    public void write(byte[] b, int off, int len) throws IOException{  
    for (int j = off; j < off + len; j++){  
    int n=b[j];  
    n = ((n>>>4)&0xF)*16+(n&0xF);  
    out.write(n);  
    }  
    }  
    }   
    %>  
    <%  
    /////下載壓縮文件包  
    Vector v = expandFileList(request.getParameterValues("selfile"), false);  
    if (v.size() == 0){  
    request.setAttribute("error", "No files selected");  
    }  
    else{  
    File dir_file = new File(request.getRealPath("") + "/myfile/");  
    int dir_l = dir_file.getAbsolutePath().length();  
    response.setContentType ("application/zip");  
    response.setHeader ("Content-Disposition", "attachment;filename="downloadname.rar"");  
    out.clearBuffer();  
    ZipOutputStream zipout = new ZipOutputStream(new Writer2Stream(out));  
    zipout.setComment("Download selected files nas one WinRAR file:ndownloadname.rar");  
    zipout.setLevel(1);  
    for (int i=0;i<v.size();i++){  
    File f = (File)v.get(i);  
    if (f.canRead()){  
    zipout.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(dir_l+1)));  
    BufferedInputStream fr = new BufferedInputStream(new FileInputStream(f));  
    byte buffer[] = new byte[0xffff];  
    int b;  
    while ((b=fr.read())!=-1) zipout.write(b);  
    fr.close();  
    zipout.closeEntry();  
    }  
    }  
    zipout.finish();  
    out.flush();  
    }  
    %>
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved