关于Response携带字节文件流回传的问题

一、单文件流的携带回传
要求:HttpServletResponse response、字节流byte[]数据
我这里只是简单演示一下,其中FileCopyUtils是Spring框架自带的工具类,有兴趣的可以去看看:https://blog.csdn.net/superdog007/article/details/16897541

	import org.springframework.util.FileCopyUtils;
	public void test(HttpServletResponse response) {
			String string = "中国加油";
			byte[] os = string.getBytes();
    	    if (ArrayUtils.isNotEmpty(os)) {
       			 response.setContentType("application/pdf;charset=UTF-8");
       			 try {
            			FileCopyUtils.copy(os,response.getOutputStream());
       			 } catch (Exception e) {
            			log.error("操作失败",e);
       			 }
  			 }
	}

二、多文件流的携带回传
因为response是单次响应的,往往就是文件流回传第一个后,系统框架会为我们自动关闭。所以多文件流的回传,我是直接压缩成zip流之后在回传。代码如下:

public void test(HttpServletResponse response) {
    String[] splitContractIds = ["1","2","3"];
    try {
        //  获取zip流
        ZipOutputStream zipOutputStream=new ZipOutputStream(response.getOutputStream());
        //  设置响应类型和字符集
        response.setContentType("application/zip;charset=UTF-8");
        for (String splitContractId : splitContractIds) {
            
            byte[] os = splitContractId.getBytes() ;
            if (ArrayUtils.isNotEmpty(os)) {
                try {
                    //  设置pdf文件的名称
                    ZipEntry zipEntry=new ZipEntry(splitContractId+".PDF");
                    zipOutputStream.putNextEntry(zipEntry);
                    zipOutputStream.write(os);
                } catch (IOException e) {
                    log.error("操作失败",e);
                }
            } 
        }
        zipOutputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }

关于多文件流的回传,也可以参考下面的文章:
1、https://blog.csdn.net/weixin_42213545/article/details/82712327
2、https://blog.csdn.net/qq_44111464/article/details/106996998
3、https://blog.csdn.net/lkr_lkr/article/details/104599901

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值