此代码是将前端传来的url参数进行转换,再以数据流的形式展示到前端
@Controller
@RequestMapping("/tpzhurl")
public class IppcTpUrlController {
protected Logger log = Logger.getLogger(this.getClass());
@RequestMapping(value = "/urlZh")
@Transactional
public void urlZh(@RequestParam(value="url")String url, HttpServletResponse response) {
try {
URL urls = new URL(url);
String host = urls.getHost();
//判断ip是不是内网ip ,IsIpUtil工具类请看另一文章
boolean ipIsInner = IsIpUtil.ipIsInner(host);
if(!ipIsInner) {
HttpURLConnection conn = (HttpURLConnection)urls.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(50 * 1000);
conn.setReadTimeout(50 * 1000);
InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
byte data[] = readInputStream(inStream);
response.setContentType("image/jpg"); //设置返回的文件类型
OutputStream os = response.getOutputStream();
os.write(data);
os.flush();
os.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}