Java下载图片并压缩

  • Post author:
  • Post category:java


  1. 前端获取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;
			}
		});
		
	} 
  1. 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 版权协议,转载请附上原文出处链接和本声明。