使用Spring Boot实现直接展示图片功能:从URL获取字节流并返回给客户端

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。使用Spring Boot实现直接展示图片功能:从URL获取字节流并返回给客户端,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

废话少说,直接上代码:

  • 其中 imageUrl 是个图片文件路径,没有存储在服务器,不能通过浏览器直接打开链接查看图片
  • 总的来说,以下这段代码的作用是从指定的图片 URL 获取字节流,并通过 ResponseEntity 对象将字节流以输入流资源的形式返回给客户端,达到直接展示图片的功能。
    @GetMapping("/image")
    public ResponseEntity<InputStreamResource> getImage() throws IOException {

        // 图片url示例
        String imageUrl = "https:xxx";

        // 打开图片URL连接
        // 创建一个URL对象以便访问图片URL
        URL url = new URL(Objects.requireNonNull(imageUrl));
        // 打开与图片URL的连接
        URLConnection connection = url.openConnection();
        // 获取连接的输入流,以获取图片数据
        InputStream inputStream = connection.getInputStream();
        // 创建一个 InputStreamResource 对象,将图片的输入流封装为资源对象
        InputStreamResource resource = new InputStreamResource(inputStream);
        // 构建并返回一个ResponseEntity,包含图片资源和响应头信息,设置响应内容类型为图片类型,将资源对象作为响应主体返回
        return ResponseEntity.ok()
                .contentType(MediaType.IMAGE_PNG)
                .body(resource);
    }

涉及到的知识点如下:

  1. 使用 URL 类和 URLConnection 类获取网络资源:
    • URL 类用于表示一个统一资源定位符,可以通过它打开连接,读取数据等操作。
    • URLConnection 类用于建立一个链接到指定 URL 资源的连接
  2. 读取网络资源的字节流:
    • 使用 URLConnection 对象的 getInputStream() 方法获取与 URL 连接的输入流,即获取网络资源的字节流
  3. 使用 InputStreamResource 类进行字节流的封装:
    • InputStreamResourceorg.springframework.core.io.InputStreamResource 类,是 Spring Framework 提供的一个实现了 Resource 接口的类
    • 用于将字节流包装成一个资源对象,并能够与 ResponseEntity 一起返回给客户端
  4. 使用 ResponseEntity.ok() 构建响应实体:
    • ResponseEntity 是 Spring Framework 提供的一个带有状态码、响应头和响应体的对象,用于构造 HTTP 响应返回给客户端。
    • ok() 方法表示请求成功,并返回一个带有 200 状态码的响应实体。
  5. 设置响应体的内容类型:
    • 使用 contentType(MediaType.IMAGE_PNG) 方法设置响应的 Content-Type 为 “image/png”,以告知客户端返回的是 PNG 图片类型的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/189756.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!