思路
1.根据数据库的图片存储表进行查询然后拿到图片路径
2.然后看项目中上传图片的路径进行下载
代码
@RequestMapping(value = "/download",method = RequestMethod.GET )
@RequiresPermissions("orderDetail:download")
public void download(HttpServletResponse response, HttpServletRequest request,Integer orderDetailId){
//响应头的设置
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
//设置压缩包的名字
//解决不同浏览器压缩包名字含有中文乱码的问题
HttpSession session = request.getSession();
String billname ="workerCard";
String downloadName=billname+".zip";
//返回客户端浏览器的版本号、类型
String agent = request.getHeader("USER-AGENT");
try {
//针对IE或者以IE为内核的浏览器处理
if (agent.contains("MSIE")||agent.contains("Trident")){
downloadName=java.net.URLEncoder.encode(downloadName, "UTF-8");
}else {
downloadName=new String(downloadName.getBytes("UTF-8"),"ISO-8859-1");
}
}catch (Exception e) {
e.printStackTrace();
}
response.setHeader("Content-Disposition","attachment;fileName=\"" + downloadName + "\"");
//设置压缩流
ZipOutputStream zip=null;
try {
zip=new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
//设置压缩方法
zip.setMethod(ZipOutputStream.DEFLATED);
} catch (IOException e) {
e.printStackTrace();
}
DataOutputStream os=null;
//从数据库中取出要下载的图片路径
List<GoodsCustomizationImage> images = goodsCustomizationImageService.selectImgUrl(orderDetailId);
System.out.println(orderDetailId);
for (GoodsCustomizationImage image : images) {
System.out.println(image);
String filename=image.getLocalUrl();
String[] split = filename.split(",");
for (String s : split) {
System.out.println(s);
String modipath = path+s;
File file = new File(modipath);
System.out.println(file);
if (file.exists()){
//添加ZipEntry,并ZipEntry中写入文件流
//这里,加上i是防止要下载的文件有重名的导致下载失败
try {
zip.putNextEntry(new ZipEntry(file.getName()));
os=new DataOutputStream(zip);
InputStream is = new FileInputStream(file);
byte[]b= new byte [1024];
int length =0;
while ((length=is.read(b))!=-1){
os.write(b,0,length);
}
is.close();
//zip.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//关闭流
try {
if (os!=null){
os.flush();
os.close();
zip.close();
}else {
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
参考地址:java项目(ssm框架)实现批量下载图片并打包压缩为zip文件 - Somuns的个人空间 - OSCHINA - 中文开源技术交流社区