f069678a5cb4f96e3a08750ba0446960e84dc56b.svn-base 3.5 KB
package com.espeed.action;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;
import org.apache.struts2.ServletActionContext;

import com.espeed.centre.pojo.YxyUserInfo;
import com.espeed.log.LogClass;
import com.opensymphony.xwork2.ActionContext;

public class FileDowloadAction extends BaseAction{

	private static final long serialVersionUID = 1L;
	
	/**获取下载的文件名*/
	public String getDownloadFileName(){
		String downloadFileName="noname.eml";
		try {
			//获取用户session
			ActionContext ac = ActionContext.getContext();
			Map<String,Object> sess = ac.getSession();			
			YxyUserInfo user=(YxyUserInfo) sess.get("yxyuser");
			loginid=user.getLogin_id();//用户账号
			domain=user.getDomain();//用户所属域名
			String Agent=ServletActionContext.getRequest().getHeader("User-Agent");
			if (null != Agent) { 
	            Agent = Agent.toLowerCase(); 
	            if (Agent.indexOf("firefox") != -1) { 
	            	downloadFileName = new String(filename.getBytes(),"iso8859-1"); 
	            } else if (Agent.indexOf("msie") != -1) { 
	            	downloadFileName = java.net.URLEncoder.encode(filename,"UTF-8"); 
	            } else { 
	            	downloadFileName = java.net.URLEncoder.encode(filename,"UTF-8"); 
	            } 
	        }
		} catch (Exception e) {
			StringWriter sw = new StringWriter();
			e.printStackTrace(new PrintWriter(sw, true));
	        String str = sw.toString();
	        LogClass.errolog(str,loginid+"@"+domain);
		}
		return downloadFileName;
	}
	
	/**获取文件流*/
	public InputStream getInputStream() throws Exception {
		//获取项目路径
		String pathew = this.getClass().getClassLoader().getResource("/").getPath();
		pathew = pathew.substring(1, pathew.length());
		pathew = pathew.replace("/WEB-INF/classes/","");
		
		//获取用户session
		ActionContext ac = ActionContext.getContext();
		Map<String,Object> sess = ac.getSession();			
		YxyUserInfo user=(YxyUserInfo) sess.get("yxyuser");
		loginid=user.getLogin_id();//用户账号
		domain=user.getDomain();//用户所属域名
		//路径
		String dir=pathew+"\\"+filedir+"\\"+domain+"\\"+loginid+"\\"+filename;
        return new FileInputStream(dir);
    }
	
	/**下载文件*/
	public String execute(){
		try {
			//获取用户session
			ActionContext ac = ActionContext.getContext();
			Map<String,Object> sess = ac.getSession();			
			YxyUserInfo user=(YxyUserInfo) sess.get("yxyuser");
			loginid=user.getLogin_id().toString();//用户账号
			domain=user.getDomain().toString();//用户所属域名
			InputStream in= getInputStream();
			if(in==null){
				return INPUT;
			}
		}catch(Exception e) {
			StringWriter sw = new StringWriter();
			e.printStackTrace(new PrintWriter(sw, true));
	        String str = sw.toString();
	        LogClass.errolog(str,loginid+"@"+domain);
			return INPUT;
		}
		return SUCCESS;
	 }

	private String loginid="erro";//用户账号
	private String domain="erro";//用户域名
	private String filename;//文件名
	private String filedir;//文件存放目录
	public String getLoginid() {
		return loginid;
	}
	public void setLoginid(String loginid) {
		this.loginid = loginid;
	}
	public String getDomain() {
		return domain;
	}
	public void setDomain(String domain) {
		this.domain = domain;
	}
	public String getFilename() {
		return filename;
	}
	public void setFilename(String filename) {
		this.filename = filename;
	}
	public String getFiledir() {
		return filedir;
	}
	public void setFiledir(String filedir) {
		this.filedir = filedir;
	}
}