頁面中顯示ftp中的圖片

package com.sais.inkaNet.common.displayImage;

import com.opensymphony.xwork2.ActionSupport;

import com.sais.inkaNet.base.util.FtpImageDisplay;
import com.sais.inkaNet.base.util.PropertiesUtil;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletResponse;

public class DisplayImageAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static final Logger log = Logger.getLogger(DisplayImageAction.class);
    /**
     * <p>屬性描述: [要訪問的圖片url]</p>
     */
    private String imageUrl;

    /**
     * <p>屬性描述: [ftp ip地址]</p>
     */
    private String ip = PropertiesUtil.getSetting("ftp.ip", "");

    /**
     * <p>屬性描述: [ftp密碼]</p>
     */
    private String password = PropertiesUtil.getSetting("ftp.password", "");

    //---------ftp---------
    /**
     * <p>屬性描述: [用戶名]</p>
     */
    private String username = PropertiesUtil.getSetting("ftp.username", "");

    /**
     * <p>方法描述: [獲得ftp中的圖片用於頁面顯示]</p>
    *
    * @return 返回結果的說明
    *
    * @throws Exception 拋出異常的原因
    */
    @Override
    public String execute() throws Exception {
    	log.info("-->獲得ftp圖片,imageUrl:"+imageUrl);
        /**
                1.+ 表示空格(在 URL 中不能使用        空格)    %20
                2./ 分隔目錄和子目錄                                         %2F
                3.? 分隔實際的 URL 和參數                                %3F
                4.% 指定特殊字符                                              %25
                5.# 表示書籤                                                     %23
                6.& URL 中指定的參數間的分隔符                       %26
                7.@     %40
         */

    	imageUrl = imageUrl.contains("\\") ? imageUrl.replace("\\", "%2F") : imageUrl;
        imageUrl = imageUrl.contains("/") ? imageUrl.replace("/", "%2F") : imageUrl;
        password = password.contains("@")?password.replace("@", "%40"):password;
        HttpServletResponse response = ServletActionContext.getResponse();
        FtpImageDisplay.getFtpImage(username, password, ip, imageUrl, response);

        return NONE;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
}
package com.sais.inkaNet.base.util; import org.apache.log4j.Logger; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import javax.servlet.http.HttpServletResponse; public class FtpImageDisplay { /** * <p>屬性描述: [聲明日誌]</p> */ private static final Logger log = Logger.getLogger(FtpImageDisplay.class); /** * <p>方法描述: [從ftp中獲得圖片流返給頁面]</p> * * @param username 用戶名 * @param password 密碼 * @param ftpUrl ftp的url * @param fileUrl 文件路徑 * @param response Response對象 */ public static void getFtpImage(String username, String password, String ftpUrl, String fileUrl, HttpServletResponse response) { InputStream isr = null; OutputStream out = null; URL u = null; try { if ((fileUrl != null) && !"".equals(fileUrl)) { response.setHeader("Content-Type", "image/png"); //response.setContentType("image/*"); // 設置返回的文件類型 out = response.getOutputStream(); StringBuffer sb = new StringBuffer("ftp://"); sb.append(username + ":"); sb.append(password + "@"); sb.append(ftpUrl + "/" + fileUrl); u = new URL(sb.toString()); URLConnection urlconn = u.openConnection(); isr = urlconn.getInputStream(); int len = urlconn.getContentLength(); int i = len; int c; while (((c = isr.read()) != -1) && (--i > 0)) { out.write(c); } log.info("獲取ftp圖片" + fileUrl); } else { log.warn("所要顯示的圖片路徑爲空"); } } catch (Exception e) { log.error(e.getMessage()); } finally { try { if (isr != null) { isr.close(); } if (out != null) { out.close(); } } catch (IOException e) { log.error(e.getMessage()); } } } }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章