如题:我在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>

解决方案 »

  1.   

    struts2文件上传下载  http://wenku.baidu.com/view/d1385ec30c22590102029d3c.htmlStruts2文件下载功能开发  http://www.javaeye.com/wiki/Struts2_leader_guide/1987-struts_guide_11http://shirlly.javaeye.com/blog/219073
    希望对你有帮助
      

  2.   

    不是这丫的  action返回string, action中包括file,contenttype,size的信息,struts自动帮你搞,具体去看人家的博客
    http://blog.csdn.net/voyage_mh1987/archive/2010/09/15/5884966.aspx
      

  3.   

    要修改Action代码如下
    public String download(){
            return SUCCESS;
    }
    public InputStream getInputStream(){
            return ServletActionContext.getServletContext().getResourceAsStream(fileName);
    }
      

  4.   

    我的文件存在 D:/files 目录下,刚发现 ServletActionContext.getServletContext().getResourceAsStream(fileName);
    是空的好比说有这样一个文件 D:/files/123.txt  此处,我的fileName该怎么写?
      

  5.   

    哦,
    fileName怎么写都不对,用FileInputStream自己开文件吧。

    new FileInputStream("d:/files/123.txt");
      

  6.   

    你的Action不是收到了页面中传过来的id嘛,根据id确定一个文件名字符串就OK了。或者你从页面中用?fileName=${fileName}这种方式直接送文件名参数也行啊。
      

  7.   

    javax.servlet.ServletException: java.io.FileInputStream cannot be cast to java.lang.String
     报这个错误的原因是什么  ?
      

  8.   

    Action方法不应该返回InputStream。
    4楼我的代码就是为了解决这个问题的。
      

  9.   

    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;
      }
     }
     
     struts.xml配置如下:
      <action name="download"
       class="com.mengya.action.DownloadAction">
       <!-- result的Type必须为stream -->
       <result name="success" type="stream">
        <!-- 下载文件类型 -->
        <param name="contentType">application/msword</param>
        <!-- 下载对话框所弹出的文件名 -->
        <param name="contentDisposition">
         fileName="200906231.doc"
        </param>
        <!-- 下载的InputStream流,Struts2自己动对应Action中的getDownloadFile方法,该方法必须返回InputStream类型 -->
        <param name="inputName">downloadFile</param>
       </result>
      </action>
      
     页面:
     <s:a href="download.action">下载</s:a> 
      

  10.   

    应该是返回类型冲突了吧,一个是String,一个是Stream