页面从后台接口获取数据流显示照片

本文介绍了一种在JSP页面上通过链接和图片标签接收数据流的方法,并提供了具体的实现代码。通过示例展示了如何使用Java后端处理请求并从云端下载图片。

JSP页面

页面上接收数据流可以用<a>标签的“href”属性接收,也可以用<img>标签的“src”属性接收。

<a href="${ctx}/identify/img?imgId=${identify.img}" target="_blank">查看详情</a>   (target="_blank",在新的标签页中打开)

接口:

	@RequestMapping("img")
	public void getImg(HttpServletRequest request, HttpServletResponse response) throws Exception{
		
		//照片存储在网盘中,获取页面传来的照片ID
		String id = request.getParameter("imgId");
		//配置文件取url和身份验证token
		String url = ConfigReader.getProperty("CLOUDDISK_DOWNLOAD_URL");
		String token = ConfigReader.getProperty("CLOUDDISK_AUTHCODE");
		String param = "authCode=" + token + "&id=" + id;
		//从网盘下载照片的流
		InputStream in = getImgStream(url,param,"GET");
		
		//声明输出流,但是要从HttpServletResponse中获取才管用
		BufferedOutputStream bout = new BufferedOutputStream(response.getOutputStream());
		//从输入流到输出流
	    try {  
	        byte b[] = new byte[1024];  
	        int len = in.read(b);  
	        while (len > 0) {  
	            bout.write(b, 0, len);  
	            len = in.read(b);  
	        }  
	    } catch (Exception e) {  
	        throw e;   
	    } finally {  
	        bout.close();  
	        in.close();  
	    }
	    
	}





### 生成任意页面的小程序二维码的后台接口方法 微信小程序提供了专门的接口用于生成小程序码或二维码,这些码可以指向小程序内的任意页面,并携带自定义参数。以下是实现这一功能的具体方法和注意事项: #### 1. 接口概述 微信小程序提供了两个主要接口用于生成小程序码或二维码: - **获取小程序码**:适用于需要生成永久有效的小程序码场景。 - **获取二维码**:适用于生成临时或永久有效的二维码场景。 接口地址分别为: - 获取小程序码(永久有效):`https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN`[^2] - 获取二维码(可带参数):`https://api.weixin.qq.com/cgi-bin/wxacode.getQRCode?access_token=ACCESS_TOKEN`[^3] #### 2. 请求参数说明 无论使用哪种接口,都需要提供以下关键参数: - **path**:小程序页面路径,必须是已经发布的小程序中存在的页面路径。例如:`pages/index/index`。 - **scene**:用于传递参数,用户扫描二维码进入小程序后,开发者可以在页面的 `onLoad` 方法中通过 `decodeURIComponent` 解析该参数[^4]。 - **width**:二维码的宽度,默认为430像素。 #### 3. 请求示例代码 以下是通过 Java 调用微信接口生成小程序码的示例代码: ```java import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; public class WxQrCodeGenerator { public static void main(String[] args) throws Exception { String accessToken = "your_access_token"; // 替换为实际的 access_token String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json"); con.setDoOutput(true); String jsonInputString = "{ \"path\": \"pages/index/index\", \"scene\": \"id=123\", \"width\": 430 }"; try(OutputStream os = con.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); } int responseCode = con.getResponseCode(); System.out.println("Response Code : " + responseCode); if (responseCode == HttpURLConnection.HTTP_OK) { // success // 处理返回的图片数据 } else { System.out.println("GET request not worked"); } } } ``` #### 4. 注意事项 - **path 参数**:必须是已经发布的小程序中存在的页面路径,否则生成的二维码将无法正常跳转。 - **scene 参数**:在调试阶段可以通过开发工具的条件编译模拟 `scene` 参数值,但需要对参数进行 `encodeURIComponent` 编码处理[^4]。 - **access_token**:调用接口时需要提供有效的 `access_token`,可通过微信提供的 `getAccessToken` 接口获取。 - **二维码有效期**:通过 `wxacode.getQRCode` 接口生成的二维码永久有效,且数量无限制。 #### 5. 返回结果处理 接口返回的是图片的二进制流,开发者需要将其保存为图片文件或直接展示给用户。如果在小程序端接收返回的数据,需设置 `wx.request` 的 `responseType` 为 `arraybuffer`,以正确解析二进制数据。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值