日期:2014-05-18  浏览次数:20663 次

struts2 文件下载
如题:我在action中得到了 文件的绝对路径 和 文件名称  以及 inputstream,请问在页面 和 action的配置文件中要怎么去处理? 页面的我是用的一下超链接,不知道怎么的不会弹出 保存文件的对话框。以下是我的相应代码:

action中(注此处我的fileName是有办法得到的):

public InputStream  download(){
                  ........
return ServletActionContext.getServletContext().getResourceAsStream(fileName);
}


配置文件:

<action ......>
<result type="stream">
<param name="contentType">application/zip</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>


页面

<a href="downloadAttach.action?id=${此处能取到id}">下载</a>

------解决方案--------------------
struts2文件上传下载  http://wenku.baidu.com/view/d1385ec30c22590102029d3c.html

Struts2文件下载功能开发  

http://www.javaeye.com/wiki/Struts2_leader_guide/1987-struts_guide_11

http://shirlly.javaeye.com/blog/219073






希望对你有帮助
------解决方案--------------------
不是这丫的  action返回string, action中包括file,contenttype,size的信息,struts自动帮你搞,具体去看人家的博客
http://blog.csdn.net/voyage_mh1987/archive/2010/09/15/5884966.aspx
------解决方案--------------------
要修改Action代码如下


public String download(){
        return SUCCESS;
}
public InputStream getInputStream(){
        return ServletActionContext.getServletContext().getResourceAsStream(fileName);
}

------解决方案--------------------
引用:
Java code
javax.servlet.ServletException: java.io.FileInputStream cannot be cast to java.lang.String

 报这个错误的原因是什么  ?

Action方法不应该返回InputStream。
4楼我的代码就是为了解决这个问题的。
------解决方案--------------------
Struts2文件下载:
 Struts2文件下载对应将一个InputStream返回
 如Action中下载的方法:
 /**
  * 文件下载的Action
  * 
  * @author 张明学
  * 
  */
 public class DownloadAction extends ActionSupport {
  public InputStream getDownloadFile() {
   return ServletActionContext.getServletContext().getResourceAsStream(
     "/upload/200906231.doc");
  }
 
  @Override
  public String execute() throws Exception {
 
   return SUCCESS;