码迷,mamicode.com
首页 > 其他好文 > 详细

struts2文件下载

时间:2014-11-27 22:02:24      阅读:229      评论:0      收藏:0      [点我收藏+]

标签: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>

 

struts2文件下载

标签:style   blog   io   ar   color   os   使用   sp   java   

原文地址:http://www.cnblogs.com/oaks/p/4127231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!