struts对文件上传和下载都做了封装,开发者只需要调用相关方法就可方便地实现文件上传下载;上传已经讲过,这些对下载进行简要说明。
struts对文件下载专门封装了一个action,名为DownloadAction,开发者只需要编写一个action,让它继承DownloadAction,同时覆写protected StreamInfo getStreamInfo方法,此方法将会返回一个读取文件流的StreamInfo。struts将会通过StreamInfo来从服务器上下载相关文件,DowloadAction中有个内部类FileStreamInfo,它有个构造函数,可以某种类型的文件封装到一个StreamInfo对象中。下面是一个示例代码:
public class DownFileAction extends DownloadAction {
@Override
protected StreamInfo getStreamInfo(ActionMapping arg0, ActionForm arg1,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//需要设置content-disposition头
response.setHeader("content-disposition", "attachment;filename=1.jpg");
String downfile = request.getSession().getServletContext().getRealPath("/download/1.jpg"); //servlet //FileStreamInfo方法将封装一个File文件,并返回能取出其数据StreamInfo对象
return new DownloadAction.FileStreamInfo("image/jpg", new File(downfile));
}
}
下载jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'download.jsp' starting page</title>
</head>
<body>
<html:link action="/download" >下载</html:link>
</body>
</html>
配置文件:
</action>
<action path="/download" type="cn.itcast.action.DownloadFileAction">
</action>

本文详细介绍了Struts框架中文件上传和下载的功能封装,特别关注了下载部分,通过使用DownloadAction和FileStreamInfo类实现了文件的便捷下载。

956

被折叠的 条评论
为什么被折叠?



