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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM