首页 > 代码库 > struts2 下载文件

struts2 下载文件

当下载的文件名字中不含有汉字,或者下载的文件不需要考虑用户的权限问题时。直接让超链接的href属性为所要下载的文件名即可。否则最好使用struts2的文件下载机制。

以下载图片为例

image

完整的代码:

action:

import java.io.File;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;public class FileDownloadAction implements Action{    private String filepath=null;        private InputStream inputStream=null;    public void setFilepath(String filepath) {        this.filepath = filepath;    }    public InputStream getFile(){        return inputStream;    }    @Override    public String execute() throws Exception {        String filename=ServletActionContext.                getRequest().getParameter("filename");        inputStream=ServletActionContext.                getServletContext().getResourceAsStream(filepath+                        File.separator+filename);        if(inputStream!=null){            return SUCCESS;        }else {            return ERROR;        }    }}

struts.xml配置:

<package name="syxpj"  extends="struts-default" namespace="/syxpj">    <action name="download" class="download" >        <result name="success" type="stream">            <param name="contentType">image/jpg</param>            <param name="inputName">file</param>            <param name="contentDisposition">filename="${request[‘filename‘]}"</param>               <param name="bufferSize">1024</param>          </result>    </action></package>

使用:

<a href="${pageContext.request.contextPath}/syxpj/download.action?filename=belle.jpg">数据模板</a>

其他文件只需要将action 的result的contentType参数变为相应的值即可。

struts2 下载文件