zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    git push 报错:missing Change-Id in commit message footer
    script命令录屏
    dubbo.xsd
    常规项目用到的jar包之maven的pom.xml
    WebSocket Demo
    对程序员有帮助的站点集锦
    java之finally的用法
    Java 中的四种引用
    字符串类型的对象与引用及字符串常量池详解
    如何掌握一项新的技能?
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/6019322.html
Copyright © 2011-2022 走看看