@Slf4j
@RestController
@RequestMapping("/kexin")
public class KexinController {
/**
* 获取图片
*/
@RequestMapping("/storage/image")
public Object getImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
String url = "http://10.128.129.240:11250/1041,01378934ba9c19f0";
byte[] bytes = ImageUtils.getBytesByUrlWithSession(url,"sessionId");
//contentType要正确,不然可能前端无法识别。png可以取文件名的扩展名
response.setContentType("image/png");
response.getOutputStream().write(bytes);
//返回null即可
return null;
}
/**
*获取图片二进制数组
*/
private byte[] getBytesByUrlWithSession(String imgUrl,String sessionId) throws Exception {
if (StringUtils.isEmpty(imgUrl)) {
return null;
}
BufferedInputStream bis = null;
ByteArrayOutputStream bos = null;
HttpURLConnection http;
URL url;
try {
url = new URL(imgUrl);
http = (HttpURLConnection) url.openConnection();
if(!StringUtils.isEmpty(sessionId)){
http.setRequestProperty("session_id",sessionId);
}
http.setConnectTimeout(3000);
http.connect();
bis = new BufferedInputStream(http.getInputStream());
bos = new ByteArrayOutputStream();
byte[] buf = new byte[BUF_SIZE];
int size;
while ((size = bis.read(buf)) != -1) {
bos.write(buf, 0, size);
}
http.disconnect();
return bos.toByteArray();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
log.error("流关闭失败,原因:" + e.getMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
log.error("流关闭失败,原因:" + e.getMessage(), e);
}
}
}
}
}
controller转发请求获取图片流
于 2021-01-14 17:11:36 首次发布