/** * <p>项目名称: 上汽inkanet项目</p> * <p>厂商: 东软集团股份有限公司</p> * <p>部门: avnc&is事业部国内业务一部</p> * <p>版权: copyright (c) 2011</p> */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;/** * <p>类名称: [图片显示action]</p> * <p>类描述: [根据提供的路径到ftp中以流的方式获得图片]</p> * <p>所属模块: 上汽inkanet项目_[模块名称]</p> * <p>创建时间 7/14/11 12:56 pm </p> * @author zouqiang [email protected] * @version 1.0*/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; }}
/** * <p>项目名称: 上汽inkanet项目</p> * <p>厂商: 东软集团股份有限公司</p> * <p>部门: avnc&is事业部国内业务一部</p> * <p>版权: copyright (c) 2011</p> */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;/** * <p>项目名称: 上汽inkanet项目</p> * <p>厂商: 东软集团股份有限公司</p> * <p>部门: avnc&is事业部国内业务一部</p> * <p>版权: copyright (c) 2011</p> *//** * <p>类名称: [获得ftp图片]</p> * <p>类描述: [获得ftp中的图片]</p> * <p>所属模块: 上汽inkanet项目</p> * <p>创建时间 7/14/11 10:45 am </p> * @author zouqiang [email protected] * @version 1.0*/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()); } } }}