下面的方法是将图片服务器或者文件服务器的多个文件,并压缩成zip包,提供下载功能/*** 获取 文件 流* @param url* @return* @throws IOException*/
private void getFile(String url ,ZipOutputStream zipOut ,String name) throws IOException{URL urlConet = new URL(url);HttpURLConnection con = (HttpURLConnection)urlConet.openConnection();con.setRequestMethod("GET");con.setConnectTimeout(4 * 1000);InputStream inStream = con .getInputStream();    //通过输入流获取图片数据ZipEntry entry = new ZipEntry(name);zipOut.putNextEntry(entry);byte[] buffer = new byte[inStream.available()];//available()是获取流中数据字节的最大长度int len = 0;while( (len=inStream.read(buffer)) != -1 ){zipOut.write(buffer, 0, len);}inStream.close();
}@RequestMapping("zip")
public void downLoad(HttpServletResponse response){List files = new ArrayList();String url1 = "http://static.uat.daoyitong.com/group1/M00/00/92/wKjcYFxGiTyALL9rAABDKq_73-M333.jpg";String url2 = "http://static.uat.daoyitong.com/group1/M00/00/92/wKjcYFxGiTyAMnXWAARECj27C5Y947.jpg";files.add(url1);files.add(url2);String zipFilename = "tempFile.zip";File file = new File(zipFilename);try {file.createNewFile();if (!file.exists()) {file.createNewFile();}response.reset();// 创建文件输出流FileOutputStream fous = new FileOutputStream(file);ZipOutputStream zipOut = new ZipOutputStream(fous);int size = files.size();for (int i = 0; i < size; i++) {//单个文件的名称 文档的话后准就是.doc  String imgUrl = (String) files.get(i);getFile(imgUrl ,zipOut,"1"+i+".jpg");}zipOut.close();fous.close();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");// 如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理response.setHeader("Content-Disposition","attachment;filename=" + new String(file.getName().getBytes("GB2312"), "ISO8859-1"));toClient.write(buffer);toClient.flush();toClient.close();} catch (Exception e) {e.printStackTrace();}  finally {try {File f = new File(file.getPath());f.delete();} catch (Exception e) {e.printStackTrace();}}
}