- 前端获取URL
//======================照片批量下载===============================
function downImg(){
var urlArr = new Array() ;
$("#tableList tbody input[type='checkbox']").each(function(i,v){
if(v.checked){
urlArr.push($(v).parent().parent().children().eq(2).children().eq(0).attr('href'));
window.location.href = "${pageContext.request.contextPath }/broker/sign/dowlandImg.in?urlArr="+urlArr;
}
});
}
- Controller接收URL压缩下载
public void dowlandImg(HttpServletResponse response, String[] urlArr) {
try {
String downloadFilename = "XXX.zip";// 文件的名称
downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 转换中文否则可能会产生乱码
response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
String[] files = urlArr;
for (int i = 0; i < files.length; i++) {
URL url = new URL(files[i]);
zos.putNextEntry(new ZipEntry(i + ".jpg"));//在压缩文件中建立名字为XXX的文件
BufferedImage buffImg = ImageIO.read(url);//读取图片
BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_BGR);
Graphics graphics = image.createGraphics();
graphics.drawImage(buffImg, 0, 0, 200, 200, null);//绘制缩小后的图
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", os);
InputStream fis = new ByteArrayInputStream(os.toByteArray());
byte[] buffer = new byte[1024];
int r = 0;
while ((r = fis.read(buffer)) != -1) {
zos.write(buffer, 0, r);
}
fis.close();
}
zos.flush();
zos.close();
} catch (Exception e) {
logger.error("下载XXX错误", e);
}
}
版权声明:本文为qq_39954604原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。