package com.jshop.action;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.json.annotations.JSON;
import org.springframework.stereotype.Controller;
import com.jshop.action.tools.Validate;
import com.jshop.entity.ArticleT;
import com.jshop.service.ArticleTService;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("jshop")
@Controller("fileDownloadAction")
@Action(value="download",results={@Result(name = "success", type = "stream", params = { "contentType",
"application/pdf", "inputName",
"inputStream", "contentDisposition",
"attachment;filename=${downloadFileName}", "bufferSize", "4096" })})
public class FileDownloadAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private final static String DOWNLOADPATH="PDF";
// private String fileName;// 初始的通过param指定的文件名属性
private ArticleTService articleTService;
private String articleid;
private String contentvalue;
private ArticleT bean = new ArticleT();
private String fileName;
public String getContentvalue() {
return contentvalue;
}
public void setContentvalue(String contentvalue) {
this.contentvalue = contentvalue;
}
@JSON(serialize = false)
public ArticleTService getArticleTService() {
return articleTService;
}
public void setArticleTService(ArticleTService articleTService) {
this.articleTService = articleTService;
}
public String getArticleid() {
return articleid;
}
public void setArticleid(String articleid) {
this.articleid = articleid;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() throws Exception {
if(Validate.StrNotNull(this.getArticleid())){
bean=this.getArticleTService().findArticleByarticleid(this.getArticleid().trim());
fileName=bean.getTitle()+".PDF";//文件名
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("")+"/PDF/"+fileName);
}
return null;
}
public String execute() throws Exception {
return SUCCESS;
}
/** 提供转换编码后的供下载用的文件名 */
public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
}