대량 생 성 QR 코드 를 저장 하지 않 고 zip 다운 로드 를 압축 합 니 다.

나 에 게 있어 서 이것 을 하 는 것 도 취 했다.많은 것 을 찾 아 보 았 는데 모두 기 존의 파일 을 포장 하여 다운로드 한 것 입 니 다. 여 기 는 스스로 조합 하 였 습 니 다.코드 부터 봅 시다!
컨트롤 러 방법 (springMVC)
/**
	 *    
	 * 
	 * @param code
	 * @param request
	 * @param response
	 */
	@ResponseBody
	@RequestMapping(value = "createCode", method = RequestMethod.GET)
	public void createCode(Integer size) {
		QRCodeWriter writer = new QRCodeWriter();
		getResponse().setHeader("Pragma", "No-cache");
		getResponse().setHeader("Cache-Control", "no-cache");
		getResponse().setDateHeader("Expires", 0);
		getResponse().setContentType("application/zip");
		List<BufferedImage> buffImgs = new ArrayList<BufferedImage>();
		BitMatrix bitMatrix = null;
		try {
			for (int j = 1; j < 10; j++) {
				bitMatrix = writer.encode(
						Property.getProperty("system.qrcodeURL"),
						BarcodeFormat.QR_CODE, size, size);
				BufferedImage buffImg = MatrixToImageWriter
						.toBufferedImage(bitMatrix);
				Graphics g = buffImg.getGraphics();
				g.setColor(Color.red);
				//                
				Font f = new Font("  ", Font.BOLD, 20);
				g.setFont(f);
				// 10,20              (x,y) .          。
				g.drawString(" " + j, 10, 30);
				g.dispose();

				buffImgs.add(buffImg);
			}
			ZipOutputStream zos = new ZipOutputStream(getResponse()
					.getOutputStream());
			int i = 1;
			for (BufferedImage buf : buffImgs) {
				ZipEntry entry = new ZipEntry(" " + i + ".jpeg");
				//         
				zos.putNextEntry(entry);
				JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(zos);
				en.encode(buf);
				zos.flush();
				i++;
			}
			zos.close();
			// MatrixToImageWriter.writeToStream(bitMatrix, "jpeg",
			// getResponse()
			// .getOutputStream());
			getResponse().getOutputStream().flush();
			getResponse().getOutputStream().close();
		} catch (WriterException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

홈 페이지 전단 JS
여기 서 호 환 처리 가 필요 합 니 다. IE 커 널 은 iframe 을 지원 하여 다운 로드 를 요청 합 니 다.하지만 불 여우 와 구 글 은 a 태그 h5 의 download 속성 을 사용 할 수 있다.
<pre name="code" class="javascript">                                       function DoSaveAsIMG() {  
                                          if (document.all.IframeReportImg.src != "about:blank")  
    	                                      window.frames['IframeReportImg'].document.execCommand("SaveAs");          
                                       } 
 
  
                                        var _size=$("#qrcode").val();
                                        var b_name = navigator.appName;
					if (b_name == "Microsoft Internet Explorer") {
					    //    IFRAME   ,     
				        if (!document.getElementById("IframeReportImg"))  
				            $('<iframe style="display:none;" id="IframeReportImg" name="IframeReportImg" onload="DoSaveAsIMG();" width="0" height="0" src="about:blank"></iframe>').appendTo("body");  
				        if (document.all.IframeReportImg.src != opts.createQRCodeURL+"?size="+_size) {  
				            //      
				            document.all.IframeReportImg.src = opts.createQRCodeURL+"?size="+_size;  
				        }  
				        else {  
				            //         
				            DoSaveAsIMG();    
				        }  
					}else{
						 var newA = document.createElement("a");
						 newA.download = "code";
						 newA.href = opts.createQRCodeURL+"?size="+_size;
						 document.body.appendChild(newA);
						 newA.click();
						 document.body.removeChild(newA);
					}

좋은 웹페이지 즐겨찾기