struts下载demo

   有上传,必有下载。struts同时也提供灵活性很高的下载功能。 本次主要介绍最基本的下载;由于时间关系,限制下载的次数以及一些安全问题下次再补充。
    首先:最简单的下载,无非是给定一个超链接,用户点击之后弹出下载框进行下载;下载的文件名字有两种方法传入:
   (1). <a href="user/down? fileName=HrInterceptor.txt">点击下载</a>   红色部分便是对应传到action的属性;
   (2). 采用依赖注入的属性,在配置文件struts.xml中动态指定该属性值
    <action name="down" class="com.action.DownloadAction" >
          <param name="fileName">\upload\HrInterceptor.txt</param>             
         <result name="success" type="stream">
              <param name="contentType">text/plain</param>
              <param name="inputName">DownLoadFile</param>
              <param name="contentDisposition">
                attachment;filename="aa.txt"
              </param>
         </result>
        
       </action>
      红色部分是需要添加的内容,注意是在<param>是和<result>同一个级别下的。
       二者选其一后,在action定义变量fileName,并写get set方法。
    其次:细心的朋友会发现struts.xml的<result>的type属性为"stream";表示用流 的形式返回给用户下载;
          <param name="contentType">text/plain</param> 表示限制下载文件参数为*.txt文件;
          <param name="contentDisposition">
             attachment;filename="aa.txt"
         </param>  attachment; 表示弹出下载对话框,filename="aa.txt" 则表示下载文件的默认名称;
    接着: 可能你在自己做的过程中会遇到这个异常 "Can not find a java.io.InputStream with the name" 表示找不到该路径下文件; 可能涉及到的原因如下:
    (1).缺少<param name="inputName">DownLoadFile</param>,这句话表示指定由action类的getDownLoadFile()方法返回被下载文件的流
    (2).action类里缺少getDownLoadFile()方法
    (3).路径出错,请细查自己的文件路径
         若用到绝对路径,本人demo的代码是:
        public InputStream getDownLoadFile()throws Exception {
            return new FileInputStream("f:\\oracle.txt");
        }
        若是相对路径,代码则为:
          private String fileName;

public String getFileName() {

return fileName;
}

public void setFileName(String fileName) {

this.fileName = fileName;
}
          public InputStream getDownLoadFile()throws Exception {
             String realPath="/upload/"+fileName;
             System.out.println(realPath);
             InputStream in=ServletActionContext.getServletContext    ().getResourceAsStream(realPath);
             return in;
         }
    基本功能已经实现,初学的童鞋们可参考。由于时间关系,比较强大的下载功能就下次再写出来吧!

猜你喜欢

转载自k0441258778983.iteye.com/blog/1048463