标签:style blog io ar color os 使用 sp java
文件下载要提供3个参数:
res ------->要下载的文件名
resName --------> 下载指定的文件名
resType ------- >下载的文件类型 ,在tomcat的web.xml 中可以找到所有文件类型对应的mime 类型
Action :
package henu.test; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownAction extends ActionSupport { private String resName; private String res; private String resType; public String getResName() { return resName; } public void setResName(String resName) { this.resName = resName; } public String getRes() throws UnsupportedEncodingException { //注意 这个名字是前台制定的文件命名 resName是在配置文件中指定 的下载的文件名 //这个是原来文件的名字 传输的过程中可能乱码 前来传过来的时候可能乱码 所以此处先进行转码 return new String(res.getBytes("iso-8859-1"),"utf-8"); } public void setRes(String res) { this.res = res; } public String getResType() { return resType; } public void setResType(String resType) { this.resType = resType; } public InputStream getTarget() throws IOException{ //此处使用输入流打开一个文件 然后使用此方法把这个输入流返回出去 return new FileInputStream(ServletActionContext.getServletContext().getRealPath("/")+"/"+res); } @Override public String execute() throws Exception { //因为是继承的 所以这个方法可以不写 System.out.println(resName); return SUCCESS; } }
struts.xml
<action name="down" class="henu.test.DownAction"> <result type="stream"> <!-- 指定下载文件入口方法中参数的名字- --> <param name="inputName">target</param> <!-- 制定文件下载的类型 ,文件mine类型都在web.xml中 --> <param name="contentType">${resType}</param> <!-- 制定缓冲区的大小 --> <param name="bufferSize">4096</param> <!-- 指定下载时候的文件名 --> <param name="contentDisposition">fileName=${resName}</param> </result> </action>
HTML
<!-- 可以取到上下文的路径 客户端的请求都是从上下文路径开始 下面的el表达式可以取到上下文路径 --> ${pageContext.request.contextPath} <a href="${pageContext.request.contextPath}/down?res=打.doc&resName=rrrr.doc&resType=application/msword">点击下载文件</a>
标签:style blog io ar color os 使用 sp java
原文地址:http://www.cnblogs.com/oaks/p/4127231.html