浏览器下载二维码压缩文件(支持中文文件名)

1、Controller中添加以下方法

@GetMapping(name="打包下载二维码",value="/down.jhtml")
	public void downloadQRCode(HttpServletRequest request,HttpServletResponse response){
		 try {
			 String zipName="下载二维码.zip";
		    String header = request.getHeader("User-Agent").toUpperCase();
	        if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE") || header.contains("like Gecko")) {
	        	zipName = URLEncoder.encode(zipName, "utf-8");
	        	zipName = zipName.replace("+", "%20");    //IE下载文件名空格变+号问题
	        } else {
	        	zipName = new String(zipName.getBytes(), "ISO8859-1");
	        }
	    	//文件下载,指定默认的名称
	        //这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开
            response.setHeader("Content-Disposition", "attachment; filename=\"" + zipName + "\"");
			//应用程序字节流
			response.setContentType("APPLICATION/OCTET-STREAM");
		
			ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());
			for(int i=0;i<4;i++){
				BufferedImage bufferImage = QRCode.createImage("QRCode for="+i, "", true);
				zipOut.putNextEntry(new ZipEntry("二维码"+i+".png"));
				ImageIO.write(bufferImage, "png", zipOut);
				zipOut.closeEntry();
			}
			//加上下面可避免压缩文件的“不可预料的压缩文件末端”错误
			zipOut.close();
			//zipOut.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 

2、测试访问

<a href="/down.jhtml>下载</html>

3、测试

浏览器弹出框 单击“确定”即可下载压缩包

扩展:

多参数,jQuery Ajax下载文件,向controller提交form.

JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。

类似下图这样根据多条件下载

--------------------- 本文来自 涓滴之水 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013344860/article/details/77969505?utm_source=copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值