struts2 文件下载

jsp文件

<td width="70%" style="padding:5px">
<%List<Accessory> accessoryList=(List<Accessory>)request.getAttribute("accessoryList");
for(Accessory accessory:accessoryList){
if(accessory!=null){
%>
<a href="downloadFileAction.action?fileName=<%=accessory.getFile_address()%>&trenName=<%=URLEncoder.encode(accessory.getFile_name(),"UTF-8")%>"><%=accessory.getFile_name()%></a><br>
<%
}
}
%>
</td>

下载action

package com.longyi.citicoa.domain.action;

import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class DownloadFileAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String fileName;  //下载文件名
private String trenName;  //文件真实名称

//从下载文件原始存放路径读取得到文件输出流
public InputStream getDownloadFile(){
return ServletActionContext.getServletContext().getResourceAsStream(fileName);
}

public String execute(){
return SUCCESS;
}

//中文需要转码tomcat配过所以不要

//get and set method
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}

public String getTrenName() {
return trenName;
}

public void setTrenName(String trenName) {
this.trenName = trenName;
}


}


struts.xml配置
<!-- 文件下载 -->
<action name="downloadFileAction" class="com.longyi.citicoa.domain.action.DownloadFileAction">
<param name="fileName"></param>
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="contentDisposition">
attachment;fileName="${trenName}"
</param>
<param name="encode">true</param>
<param name="inputName">downloadFile</param>
</result>
</action>

你可能感兴趣的:(struts2)