struts2文件下载

来源:互联网 发布:潘石屹 知乎 编辑:程序博客网 时间:2024/05/24 06:53

文件能上传当然也能下载了,下面是一个下载文件的例子,万变不离其宗,所以对于其他文件的下载,只要改变一些参数和配置就可以了。

以下代码都是可以运行的。

这是jsp页面的部分代码:

  <</span>formaction="${pageContext.request.contextPath}/ttt/downlord.action">

  文件路径:<</span>inputtype="text" name="inputPath" value="/uploads/test.zip"/><</span>br/>

  文件名称:<</span>inputtype="text" name="fileName" value="test.zip"/><</span>br/>

  <</span>inputtype="submit" value="下载"/><</span>br/>

  </</span>form>

 

 

这是文件下载的Action

importjava.io.InputStream;

importjava.io.UnsupportedEncodingException;

 

importorg.apache.struts2.ServletActionContext;

 

importcom.opensymphony.xwork2.ActionSupport;

 

publicclass DownloadFile extendsActionSupport {

      public String getInputPath() {

             return inputPath;

      }

 

      public voidsetInputPath(String inputPath) {

             this.inputPath=inputPath;

      }

 

      public String getFileName() {

             return fileName;

      }

 

      public voidsetFileName(String fileName) {

             this.fileName=fileName;

      }

 

      private String inputPath;

      private String fileName;

 

      public InputStream getInputStream() throws Exception{

             return ServletActionContext.getServletContext().getResourceAsStream(inputPath);

      }

      

      @Override

      public String execute() throwsException {

             if(!inputPath.startsWith("/WEB-INF")){

                    return SUCCESS;

             }

             return null;

      }

      public String getDownloadFileName(){

             String downFileName=fileName;

             try {

                    downFileName=newString(downFileName.getBytes(),"ISO8859-1");

             } catch(UnsupportedEncodingException e) {

                    // TODOAuto-generated catch block

                    e.printStackTrace();

             }

             return downFileName;

      }

}

 

 

 

这是文件下载的配置文件:

<</span>actionname="downlord" class="com.defu.com.DownloadFile">

<</span>resultname="success" type="stream">

<</span>paramname="contentType">application/octet-stream;charset=ISO8859-1</</span>param>

<</span>paramname="inputName">inputStream</</span>param>

<</span>paramname="contentDisposition">attachment;filename=${downloadFileName}</</span>param>

<</span>paramname="bufferSize">4096</</span>param>

</</span>result>

</</span>action>

当然,文件下载也可能是其他文件类型,只要改变一些红色的contentType中的参数就可以了。
原创粉丝点击