JAVA 读取图片储存至本地

需求:serlvet经过处理通过报表工具返回一张报表图(柱状图 折线图)。

          现在需要把这个图存储到本地 以便随时查看

 

 

 // 构造URL
URL url = new URL(endStr);
 // 打开URL连接
URLConnection con = url.openConnection();
 // 得到URL的输入流
InputStream input = con.getInputStream();
// 设置数据缓冲
byte[] bs = new byte[1024 * 2];
// 读取到的数据长度
int len;
// 输出的文件流保存图片至本地
OutputStream os = new FileOutputStream(“D:\\a.jpg”);
while ((len = input.read(bs)) != -1) {
os.write(bs, 0, len);
}
os.close();
input.close();

 后来 在开发过程中遇到这样一个问题。

根据需要配置了单点登录和ssl安全证书。这样在生成图片的时候会生成一张浏览不了的。

原因是。在生成图片的时候,每次都是从后台去访问地址的。由于过滤器的原因访问不到。所以对以上代码做了修改

URLConnection con = url.openConnection();//处理以http开头的地址
替换为

HttpsURLConnection con = (HttpsURLConnection) url.openConnection();//处理以https开头的地址

 

添加过滤器

package com.hjkj.listeners;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import edu.yale.its.tp.cas.client.filter.CASFilter;

public class MyCASFilter extends CASFilter {

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws IOException, ServletException {
		String requestURI = ((HttpServletRequest)request).getRequestURI();
		String contextPath = ((HttpServletRequest)request).getContextPath();
		System.out.println(requestURI.toString());
		if (requestURI.indexOf("reportServlet") != -1) {
			fc.doFilter(request, response);
			return ;
		}
		try {
			super.doFilter(request, response, fc);
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 

你可能感兴趣的:(java,url,过滤器,本地,下载图片)