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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19472.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论