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();
			}
		}
	}

}

3、打开浏览器测试response输出到页面
Java从服务器获得图片输入流InputStream,并使用response输出到页面_第1张图片

你可能感兴趣的:(Java,File文件流)