现把该程下载要代码贴下,供大家需要的时候参考下:
<%@pageimport="java.util.*,
java.net.*,
java.text.*,
java.util.zip.*,
java.io.*"%>
<%!
staticVectorexpandFileList(String[]files,booleaninclDirs){
Vectorv=newVector();
if(files==null)returnv;
for(intj=0;j<files.length;i++)v.add(newFile(URLDecoder.decode(files[j])));
for(inti=0;i<v.size();i++){
Filef=(File)v.get(i);
if(f.isDirectory()){
File[]fs=f.listFiles();
for(intn=0;n<fs.length;n++)v.add(fs[n]);
if(!inclDirs){
v.remove(i);
i--;
}
}
}
returnv;
}
classWriter2StreamextendsOutputStream{
Writerout;
Writer2Stream(Writerw){
super();
out=w;
}
publicvoidwrite(inti)throwsIOException{
out.write(i);
}
publicvoidwrite(byte[]b)throwsIOException{
for(intj=0;j<b.length;j++){
intn=b[j];
//Convertbytetoubyte
n=((n>>>4)&0xF)*16+(n&0xF);
out.write(n);
}
}
publicvoidwrite(byte[]b,intoff,intlen)throwsIOException{
for(intj=off;j<off+len;j++){
intn=b[j];
n=((n>>>4)&0xF)*16+(n&0xF);
out.write(n);
}
}
}
%>
<%
/////下载压缩文件包
Vectorv=expandFileList(request.getParameterValues("selfile"),false);
if(v.size()==0){
request.setAttribute("error","Nofilesselected");
}
else{
Filedir_file=newFile(request.getRealPath("")+"/myfile/");
intdir_l=dir_file.getAbsolutePath().length();
response.setContentType("application/zip");
response.setHeader("Content-Disposition","attachment;filename=\"downloadname.rar\"");
out.clearBuffer();
ZipOutputStreamzipout=newZipOutputStream(newWriter2Stream(out));
zipout.setComment("Downloadselectedfiles\nasoneWinRARfile:\ndownloadname.rar");
zipout.setLevel(1);
for(inti=0;i<v.size();i++){
Filef=(File)v.get(i);
if(f.canRead()){
zipout.putNextEntry(newZipEntry(f.getAbsolutePath().substring(dir_l+1)));
BufferedInputStreamfr=newBufferedInputStream(newFileInputStream(f));
bytebuffer[]=newbyte[0xffff];
intb;
while((b=fr.read())!=-1)zipout.write(b);
fr.close();
zipout.closeEntry();
}
}
zipout.finish();
out.flush();
}
%>
|