当前位置: 首页 > news >正文

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回

服务端代码:

import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;@Controller
@RequestMapping("/api")
public class ImageController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/get-image")public ResponseEntity<InputStreamResource> getImage(@RequestParam String identifier, @RequestParam String path) {// 构建客户端请求URLString clientUrl = "http://client-server/api/fetch-image?identifier=" + identifier + "&path=" + path;// 通过RestTemplate调用客户端接口ResponseEntity<byte[]> response = restTemplate.getForEntity(clientUrl, byte[].class);if (response.getStatusCode() == HttpStatus.OK) {// 将客户端返回的图片数据封装到InputStreamResource中InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(response.getBody()));// 设置响应头HttpHeaders headers = new HttpHeaders();headers.add("Content-Type", "image/png");return new ResponseEntity<>(resource, headers, HttpStatus.OK);} else {return new ResponseEntity<>(HttpStatus.NOT_FOUND);}}
}

客户端代码:

import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestMapping;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;@Controller
@RequestMapping("/api")
public class ClientImageController {@GetMapping("/fetch-image")public ResponseEntity<byte[]> fetchImage(@RequestParam String identifier, @RequestParam String path) {// 构建图片文件的完整路径String fullPath = "/path/to/images/" + identifier + path;try {// 打开图片文件的输入流InputStream inputStream = new FileInputStream(fullPath);// 读取图片数据byte[] imageData = inputStream.readAllBytes();inputStream.close();// 设置响应头HttpHeaders headers = new HttpHeaders();headers.add("Content-Type", "image/png");return new ResponseEntity<>(imageData, headers, HttpStatus.OK);} catch (IOException e) {// 处理文件未找到或其他IO异常return new ResponseEntity<>(HttpStatus.NOT_FOUND);}}
}

说明

  1. 服务端

    • 使用 RestTemplate 调用客户端的接口。
    • 将客户端返回的图片数据封装到 InputStreamResource 中,并返回给前端。
  2. 客户端

    • 接收服务端的请求,读取本地图片文件。
    • 将图片数据以字节数组的形式返回给服务端。

配置

  1. RestTemplate Bean(在服务端的配置类中添加):
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class AppConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

2.图片路径:根据你的实际情况修改 fullPath 的前缀路径,以适应你的图片存储路径。

这个示例代码展示了如何在服务端调用客户端读取本地图片并返回给前端的基本流程。如果需要处理更多的业务逻辑或错误情况,可以进一步完善代码。

相关文章:

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回

服务端代码: import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; …...

os7安装gitlab

gitlab安装要求&#xff1a;os7以上版本&#xff0c;4G内存&#xff0c;磁盘50GB 1.克隆 由于我这里不想影响原来的&#xff0c;所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按&#xff1a;insert…...

木头姐:将出于经济方面的考虑支持特朗普

美国投资公司Ark Invest的首席执行官凯西•伍德表示&#xff0c;她计划在今年的总统选举中投票给共和党候选人、美国前总统唐纳德•特朗普。 “就像我对我的孩子们说的……就像我对他们说的&#xff0c;‘听着&#xff0c;我要把票投给能为我们的经济做得最好的人。’伍德周末…...

sql注入登陆绕过

此列表包含通过XPath、LDAP和SQL注入绕过登录的有效负载(按此顺序)。 使用此列表的方法是将前200行作为用户名和密码。然后,先将完整的列表放入用户名中,然后放入密码输入,同时放入一些密码(如Pass1234)或一些已知的用户名(如admin)。 admin password 1234 123456 root to…...

QT利用QGraphicsDropShadowEffect效果及自定义按钮来实现一个炫酷键盘

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<...

机器学习(一)

机器学习 1.机器学习概述1.1 人工智能概述1.1.1 机器学习与人工智能、深度学习的关系1.1.2 人工智能的起点1.1.3 机器学习、深度学习能做什么&#xff1f; 1.2 什么是机器学习&#xff1f;1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…...

java 非srping 使用r2dbc操作mysql 增删改查代码

要在Java中使用R2DBC操作MySQL&#xff0c;首先需要添加相关依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…...

Django 使用Apscheduler执行定时任务

Apscheduler 介绍 核心组件&#xff1a; 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器&#xff0c;适用于脚本 BackgroundScheduler 后台调度器&#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

Shopee API接口:获取搜索栏生成的商品结果列表

一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能&#xff0c;并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统&#xff0c;尤其是针对美容、医美等美业门店&#xff0c;一个优秀专业的系统十分重要&#xff0c;它必须贴合门店的经营需求&#xff0c;提供更全面、便捷、高效的管理功能&#xff0c;帮助提升门店的服务质量和经营效益。 以下…...

智慧养老的养老方式及其技术实现与趋势

智慧养老是一种借助现代信息技术手段&#xff0c;为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式&#xff1a; 1. 远程健康监测系统 通过智能穿戴设备&#xff0c;如手环、手表等&#xff0c;实时收集老年人的生理数据&#xff0c;如心率、血…...

思维导图之计算机网络整体框架

高清自行访问&#xff1a;计算机网络整体框架 (yuque.com)...

P7771 【模板】欧拉路径

网址如下&#xff1a; P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法&#xff0c;搞了我好久 关于欧拉回路的知识可以看我之前的博客&#xff1a; 一点关于欧拉回路的总结-CSDN博客 代码如下&#xff1a; #include<q…...

卷积神经网络(CNN)理解

1、引言&#xff08;卷积概念&#xff09; 在介绍CNN中卷积概念之前&#xff0c;先介绍一个数字图像中“边缘检测edge detection”案例&#xff0c;以加深对卷积的认识。图中为大小8X8的灰度图片&#xff0c;图片中数值表示该像素的灰度值。像素值越大&#xff0c;颜色越亮&…...

Databend 开源周报第 149 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持递归公共表…...

Hue Hadoop 图形化用户界面 BYD

软件简介 Hue 是运营和开发 Hadoop 应用的图形化用户界面。Hue 程序被整合到一个类似桌面的环境&#xff0c;以 web 程序的形式发布&#xff0c;对于单独的用户来说不需要额外的安装。...

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一&#xff0c; 文档描述二&#xff0c; Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一&#xff0c; 文档描述 RT600的启动模式共支持4种&#xff1a; 1&am…...

七种不同类型测宽仪技术参数 看看哪种能用于您的产线?

在线测宽仪种类众多&#xff0c;原理不同&#xff0c;产品不同&#xff0c;型号不同&#xff0c;其技术参数也各不相同。不同的测量范围与测量精度&#xff0c;适用于不同规格的板材&#xff0c;看看您的板材能适用于哪种范围。 1、单测头平行光测宽仪 点光源发射的光经过发射…...

Linux内存管理核心机制解析:从伙伴系统到Slab分配器

1. 项目概述&#xff1a;为什么内存管理是Linux的基石干了这么多年运维和开发&#xff0c;我越来越觉得&#xff0c;理解一个系统&#xff0c;就得从它的“内存”入手。这玩意儿就像人的大脑&#xff0c;程序要跑起来&#xff0c;数据要流动&#xff0c;都得在内存里过一遍。Li…...

终极简单指南:如何用Seraphine英雄联盟助手快速提升排位胜率

终极简单指南&#xff1a;如何用Seraphine英雄联盟助手快速提升排位胜率 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 想象一下这样的场景&#xff1a;排位赛开始前&#xff0c;你正手忙脚乱地查询对手战绩…...

AP431比较器应用设计与动态响应优化

1. AP431作为比较器的设计背景与特性解析在模拟电路设计中&#xff0c;电压基准源和比较器是两个最基础的构建模块。AP431作为行业标准431系列的一员&#xff0c;最初的设计定位是精密电压基准源&#xff0c;用于替代传统齐纳二极管。其核心价值在于内部集成了一个高精度2.5V带…...

未来是神经-符号的:AI 推理是如何演变的

原文&#xff1a;towardsdatascience.com/the-future-is-neuro-symbolic-how-ai-reasoning-is-evolving-143ce6485b4f 人工智能软件被用于增强本文文本的语法、流畅性和可读性。 一个名为AlphaGeometry的显著新 AI 系统最近解决了大多数人类都难以解决的困难高中水平数学问题。…...

别再手动调图了:用Python+Midjourney API自动批处理建筑效果图(含GitHub开源脚本+37个真实项目参数)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;别再手动调图了&#xff1a;用PythonMidjourney API自动批处理建筑效果图&#xff08;含GitHub开源脚本37个真实项目参数&#xff09; 建筑可视化团队常面临重复性高、参数微调繁琐的出图任务——同一方案需生…...

MISC实战:从受损pcap到关键数据提取的全链路取证分析

1. 受损pcap文件修复实战指南 遇到打不开的流量包文件就像拿到一张破损的地图&#xff0c;明明知道宝藏就在里面却无从下手。我处理过上百个损坏的pcap文件&#xff0c;最常见的报错是"Not a pcap/pcapng file"或"File has invalid header"。这时候别急着…...

HarmonyOS 6 CustomDialog 嵌套弹窗使用文档

文章目录完整代码弹窗嵌套结构1. 弹窗层级关系2. 嵌套实现关键逻辑核心参数与API1. CustomDialog 装饰器2. CustomDialogController 弹窗控制器3. 关闭拦截 onWillDismiss4. 数据双向绑定 Link5. 生命周期管理总结完整代码 // xxx.ets CustomDialog struct CustomDialogExampl…...

谷歌关键词搜索怎么做上去? 提升首页点击率的4个标题优化细节

某家出口企业耗费6个月将“工业水泵制造”推至搜索结果第三位。搜索控制台报表显示&#xff0c;该网页月度曝光量达45,000次&#xff0c;访客仅有540人。点击率停留在1.2%。排在第五位的同行业公司&#xff0c;凭借52个字符的标题&#xff0c;拿走月均3,200个访客。一份针对海外…...

3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验

3大核心能力解析&#xff1a;Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...

完整掌握yuzu模拟器:专业级Switch游戏体验优化指南

完整掌握yuzu模拟器&#xff1a;专业级Switch游戏体验优化指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu模拟器作为目前最成熟的任天堂Switch开源模拟器&#xff0c;为PC玩家提供了在电脑上畅玩Switch游…...