读书人

struts2 文件下载,该如何处理

发布时间: 2013-10-15 16:47:37 作者: rapoo

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;
}
}

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>

读书人网 >J2EE开发

热点推荐