• Java从服务器获得图片输入流InputStream,并使用response输出到页面


    1、创建测试类(FileController.java)

    package com.jeff.controller;
    
    import java.io.InputStream;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.jeff.utils.HttpUtils;
    
    @RestController
    public class FileController {
    
    	/**
    	 * 
    	 * @description: 从服务器端获得图片,并输出到页面
    	 * @author: Jeff
    	 * @date: 2019年12月7日
    	 * @param resp
    	 */
    	@RequestMapping("getImage")
    	public void getImage(HttpServletResponse resp) {
    		// 服务器图片url
    		String urlPath = "http://192.168.1.100:8080/images/jie.jpg";
    		// 从服务器端获得图片,并输出到页面
    		InputStream inputStream = HttpUtils.getInputStream(urlPath);
    		HttpUtils.writeFile(resp, inputStream);
    	}
    
    }
    
    

    2、创建http工具类(HttpUtils.java)

    package com.jeff.utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import javax.servlet.http.HttpServletResponse;
    
    public class HttpUtils {
    
    	/**
    	 * 
    	 * @description: 从服务器获得一个输入流(本例是指从服务器获得一个image输入流)
    	 * @author: Jeff
    	 * @date: 2019年12月7日
    	 * @return
    	 */
    	public static InputStream getInputStream(String urlPath) {
    		InputStream inputStream = null;
    		HttpURLConnection httpURLConnection = null;
    		try {
    			URL url = new URL(urlPath);
    			httpURLConnection = (HttpURLConnection) url.openConnection();
    			// 设置网络连接超时时间
    			httpURLConnection.setConnectTimeout(3000);
    			// 设置应用程序要从网络连接读取数据
    			httpURLConnection.setDoInput(true);
    			httpURLConnection.setRequestMethod("GET");
    			int responseCode = httpURLConnection.getResponseCode();
    			System.out.println("responseCode is:" + responseCode);
    			if (responseCode == HttpURLConnection.HTTP_OK) {
    				// 从服务器返回一个输入流
    				inputStream = httpURLConnection.getInputStream();
    			} else {
    				inputStream = httpURLConnection.getErrorStream();
    			}
    		} catch (MalformedURLException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return inputStream;
    	}
    
    	/**
    	 * 
    	 * @description: 将输入流输出到页面
    	 * @author: Jeff
    	 * @date: 2019年12月7日
    	 * @param resp
    	 * @param inputStream
    	 */
    	public static void writeFile(HttpServletResponse resp, InputStream inputStream) {
    		OutputStream out = null;
    		try {
    			out = resp.getOutputStream();
    			int len = 0;
    			byte[] b = new byte[1024];
    			while ((len = inputStream.read(b)) != -1) {
    				out.write(b, 0, len);
    			}
    			out.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (out != null) {
    					out.close();
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    }
    

     https://www.it610.com/article/1282209960490450944.htm

  • 相关阅读:
    一个tomcat设置多个端口,多个端口对应多个应用
    Docker 容器镜像删除
    Centos7上安装docker
    oracle锁表与解表
    windows共享文件夹
    tomcat部署项目后,war包是否可刪?war包存在必要性!
    解决Windows对JDK默认版本切换问题
    FLASHBACK介绍
    ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
    Linux journalctl命令
  • 原文地址:https://www.cnblogs.com/keyi/p/13700982.html
Copyright © 2020-2023  润新知