访问第三方接口 获得一个输入流 再把流输出给前端(Excel文件)

前言

这是博主的第二篇文章,第一篇还是在上学的时候发布的。现如今已经实习了 这次写文章的原因是因为 在分配到这个任务的时候 发现对于小白来说这个需求面向百度编程失效了 并没有发现特别符合要求的文章,所以才想到写下拉 也用于个人笔记。

一、需求

访问第三方接口 获得的是一个输入流 再把这个流返回给前端 同时我包装成了一个文件流。很少有这种要求 一般都是访问第三方接口 吧文件流 缓存到本地。
需求是获得一个Excel表的文件流 再把这个文件流返回给前端 访问接口直接下载

二、步骤

1.访问第三方接口

代码如下

 public staticInputStream  httpURLConectionGET(String GET_URL) {
      //GET_URL就是你要访问的接口地址
      URL url = new URL(GET_URL);  // 把字符串转换为URL请求地址
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接
      connection.connect();// 连接会话
      // 获取输入流
      InputStream inputStream = connection.getInputStream();
      return inputStream ;
      }

2.输入流转输出流输出

 public void exportExcel(String GET_URL , HttpServletResponse response) {
 InputStream ips = manageConfigService.httpURLConectionGET(GET_URL );
      response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
      response.setCharacterEncoding("utf-8");
      //配置导出的Excel名称
      response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + "导出的表名"+ ".xlsx");
      byte[] bytes = new byte[1024];
      OutputStream outputStream = response.getOutputStream();
      int count = -1;
      while ((count = ips.read(bytes)) != -1) {
        outputStream.write(bytes, 0, count);
      }
      outputStream.flush();
      outputStream.close();
}

结果:

访问接口之后会自动下载Excel
在这里插入图片描述

总结:

重要的是对输出输入流的理解 本来就那些东西 ,但是如果全部系统性的学一遍IO流还是需要很多时间的

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将输入以zip文件格式输出前端,可以使用Java中的ZipOutputStream类。首先,你需要创建一个ZipOutputStream对象,并将其与一个输出(如网络输出)关联。然后,你可以使用putNextEntry()方法将每个要压缩的文件添加到zip文件中,使用write()方法将文件内容写入zip文件中。最后,使用finish()方法完成压缩并将zip文件发送给前端。 以下是一个示例代码: ```java public void downloadZipFile(HttpServletResponse response) { try { response.setContentType("application/zip"); response.setStatus(HttpServletResponse.SC_OK); response.setHeader("Content-Disposition", "attachment; filename=\"example.zip\""); ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream()); // 添加要压缩的文件 ZipEntry zipEntry = new ZipEntry("example.txt"); zipOut.putNextEntry(zipEntry); byte[] bytes = "Hello, world!".getBytes(); zipOut.write(bytes, 0, bytes.length); zipOut.closeEntry(); zipOut.finish(); zipOut.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 在上述代码中,我们首先设置了响应的Content-Type和Content-Disposition头,然后创建了一个ZipOutputStream对象,并将其与响应的输出关联。接着,我们使用putNextEntry()方法添加了一个要压缩的文件,并使用write()方法将文件内容写入zip文件中。最后,我们调用了finish()方法完成压缩并关闭了ZipOutputStream对象。这样,前端就可以收到一个名为"example.zip"的压缩文件,其中包含一个名为"example.txt"的文件,其内容为"Hello, world!"。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值