注册 登录
编程论坛 J2EE论坛

struts2 文件下载 问题

heqingkelly 发布于 2010-10-06 18:14, 558 次点击
我写了个文件下载,我想用<s:iterator>标签遍历一个文件夹下的文件,
每个文件后有个下载链接,点击“下载”,就可以下载到硬盘上了,struts.xml,
Filedownload.java ,都写好了,就是jsp不知怎么写,主要是标签不会用,
而且也不知道这下载是的路径怎么定的,如果大家有空就帮我看看,谢谢!

struts.xml
程序代码:
<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.i18n.encoding" value="GBK"/>
    <package name="default" namespace="/" extends="struts-default">
        <action name="filedownload" class="com.heqing.action.Filedownload">
      
        <!--<interceptors>  
            <interceptor name="downloadinterceptor"
                class="com.dingxun.download.DownloadInterceptor">  
            </interceptor>  
            <interceptor-stack name="myinterceptor">  
                <interceptor-ref name="downloadinterceptor" />  
                <interceptor-ref name="defaultStack"></interceptor-ref>  
            </interceptor-stack>  
        </interceptors>  
-->

            <param name="fileName"></param>   <!-- 设置文件名参数,由页面上传入 -->   
            <result name="success" type="stream">  
                <param name="contentType">application/octet-stream</param>   <!-- 下载文件类型定义 -->  
                <param name="contentDisposition">       <!-- 下载文件处理方法 -->
                    attachment;filename="${downloadChineseFileName}"
                </param>  
                <param name="inputName">downloadFile</param>  <!-- 下载文件输出流定义 -->
            </result>  
        </action>
    </package>
</struts>

Filedownload.java
程序代码:
import import import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Filedownload extends ActionSupport {
    // 下载文件原始存放路径
    private final static String DOWNLOADFILEPATH = "/";
    // 文件名参数变量
    private String fileName;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

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

    // 如果下载文件名为中文,进行字符编码转换
    public String getDownloadChineseFileName() {
        String downloadChineseFileName = fileName;

        try {
            downloadChineseFileName = new String(downloadChineseFileName
                    .getBytes(), "ISO8859-1");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        return downloadChineseFileName;
    }

    public String execute() {
        return SUCCESS;
    }
}




[ 本帖最后由 heqingkelly 于 2010-10-7 03:17 编辑 ]
1 回复
#2
heqingkelly2010-10-07 03:26
为了把悬赏分增加,我又重新发表了一个,请会的人帮帮我,非常感谢!我已经做了好长时间了
1