• 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();
            }
        }
    }
  • 相关阅读:
    C++中的类模板详细讲述
    IE6
    Active Driectory 操作(转来放起来,不要丢了)
    The length of the query string for this request exceeds the configured maxQueryStringLength value
    试一下用word发布一篇文章
    各种分享api
    汇编语言程序设计 检测点1.1
    Windows下配置使用MemCached
    chrome
    ASP.NET 把集合导出为Excel的一个助手类
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/6019322.html
Copyright © 2020-2023  润新知