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