struts2中关于下载的实例应用

来源:互联网 发布:淘宝首页1920全屏装修 编辑:程序博客网 时间:2024/05/15 02:37

这次说一下struts2中对文件下载的应用,相比文件上传,下载应该说更加的简单,struts2已经很好地封装了下载文件的方法,只需要极少代码和配置文件就能搞定

现在还是用邮件附件下载的实例来说一下struts2的下载的应用

 

我是在ssh框架下开发的,所以在action可以这样来写邮件附件下载

public class EmailAction extendsActionSupport implements ModelDriven {

private Email email;

       privateint User_Id;

    privateInputStream downFile;   //一定要有这个,不然struts2无法将文件内容以流的形式发送到页面上去

这儿还是省略了sette和getter,自己添加吧

 

 

//下载的方法

public String downLoad() {

      //先通过页面传回来的邮件的ID,将邮件数据从数据库查出来

              email= emailService.showEmailById(email.getId());

      //根据数据库查出的数据,找到要下载的文件所在的路径。

              StringdownloadPath = ServletActionContext.getServletContext()

                            .getRealPath("/upload/person"+ email.getId());

      //将文件所在路径和文件名拼接组成文件下载路径

              StringfileName = downloadPath + File.separatorChar

                            +email.getEmailFileName();

              try{

            //将邮件附件以流的形式写入(重要的一步)

                     downFile= new FileInputStream(new File(fileName));

String emailName = email.getEmailFileName()

                     emailName= new String(emailName.getBytes(), "ISO-8859-1");//解决中文乱码                  return "downloadsuccess";

              }catch (FileNotFoundException e) {

                     e.printStackTrace();

              }

              return"fail";

       }

}

 

//在下载中,大家也可以看到,他的代码其实很简单,最主要的是struts.xml中的下载配置才最重要。看代码

这是在action中用于下载的result。

//这儿是访问下载的action后,成功后type为stream,

<result name="downloadsuccess"type="stream" >

                     //这个参数一定要写,指明输入的名称

                     <paramname="inputName">downFile</param>

                                     <param

        //配置下载后文件的名称

name="contentDisposition">attachment;filename=${emailName}

</param>

//设置缓冲区大小

                                 <paramname="bufferSize">1024</param>

                  </result>

 

这样一个struts2的下载demo就算完成了。

0 0
原创粉丝点击