首先需要前台请求后台并向后台发送所要下载的文件名称(可以通过表单或者超链接等)
单个下载:
1)实例化:SmartUpload su=new SmartUpload();
2)初始化:su.initialize(getServletConfig(),request,response);
3)下载:su.download(路径);
这样下载会以默认的方式(浏览器方式)打开,要进行设置
4)设置响应方式(不使用默认方式):su.setContentDisPosition(null);
批量下载:
1):设置响应类型:response.setContentType("application/x-msdownload")
2):设置响应头(下载后文件的名字):response.setHeader("content-Disposition","attachment;filename=test.zip");
3):得到服务器中要下载文件的路径:String path=getServletContext().getRealPath("/")+"文件夹名/";
4):取得前台提交的要下载文件的名字集合:String [] filenames=request.getParameterValues("xx");
5)使用压缩文件流:ZipoutputStream zos=new zipoutputStream(response.getoutputStream());
6):循环文件名,依次读取再写入到输出流当中
for(String filename:filenames){
File file=new File(path+filename);
zos.putNextEntry(new ZipEntry(filename));
FileInputStream fis=new FileInputStream(file);
byte []b=new byte[1024];
int n=0;
while((n=fis.read(b))!=-1){
zos.write(b,0,n);
}
zos.flush();
fis.close();
}
zos.flush();
zos.close();
文件上传完毕