说我的博客文字太多,没办法就分两篇发了,都是第3的知识点,前面讲了LookupDispatchAction,这里讲解文件的上传和下载!
文件的上传
先是文件的上传吧,因为有了上传才会有下载,HOHO!
首先,还是action的书写,示例:
- //文件上传代码
- public class FileUpLoadAction extends Action{
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- FilesForm ffs = (FilesForm)form; //获得formbean对象
- FormFile ff = ffs.getMyfile(); //获得到FormFile对象
- InputStream is = ff.getInputStream();//获得一个写入流
- OutputStream os = new FileOutputStream("c:/"+new SimpleDateFormat("yyyy-MM-dd HH.mm.ss").format(new Date())+".png"); //以上传时间为名字,避免文件名的重复,并获得一个输出流
- byte [] by = new byte[is.available()];//定义一个byte数组用了装文件数据
- int len = 0;
- while((len=is.read(by))!= -1){//如果小于-1就是读完了
- os.write(by,0,len); //从0开始,读到最后结束
- }
- is.close();
- os.flush();
- os.close();
- return mapping.findForward("success");
- }
下来是FormBean的书写:
- //FormBean的书写,其中的myfile跟jsp页面上的property值对应!
- public class FilesForm extends ActionForm {
- private FormFile myfile;
- public FormFile getMyfile() {
- return myfile;
- }
- public void setMyfile(FormFile myfile) {
- this.myfile = myfile;
- }
- }
接着是配置文件的配置:
- <!--FormBean的配置-->
- <form-beans>
- <form-bean name="files" type="com.lovo.form.FilesForm"></form-bean>
- </form-beans>
-
- <!--Action的配置-->
- <action path="/file" type="com.lovo.action.FileUpLoadAction" name="files" validate="false">
- <forward name="success" path="/success.jsp"></forward>
- </action>
这里的配置跟一个普通的action和formbean的配置没有什么区别!
然后是jsp页面的书写:
<html:form action="file.do" method="post" enctype="multipart/form-data">
<html:file property="myfile"></html:file>
<html:submit value="上传"></html:submit>
</html:form>
提示:form的enctype="multipart/form-data"必须配置,并且,Mehtod必须是post类型
<html:file property="myfile"></html:file> 的property的值为formbean里面的属性名!
文件的下载
文件的下载在Struts中提供了一个内置的实现类也就是DownloadAction这个类,下面我们来书写一个Action来继承这个类代码如下:
- //文件的下载 继承DownloadAction并实现getStreamInfo方法
- public class FileDownAction extends DownloadAction {
- protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- response.setContentType("application/x-download");//设置response的meta的类型为下载类型,这样浏览器才会弹出保持对话框
- response.setHeader("Content-Disposition", "attachment;filename=" + "mm.png");//设置响应头,第一个参数为设置文件的默认名,第二个参数是目的是用户下载(保存文件)给出一个文件的默认的具体名字
- StreamInfo si = new FileStreamInfo("image/png",new File("c:/mm.png"));//因为StreamInfo 是一个接口,那么来创建它的实现类FileStreamInfo,第一个参数是文件类型,第二个参数是文件在服务器上的的保持位置,这里最好是具体的文件位置
- return si;//返回StreamInfo
- }
- }
action的配置就较为简单了,也不需要formbean的参与代码如下:
<action path="/down" type="com.lovo.action.FileDownAction" ></action>
这里Action的配置就不做讲解了!
最后是JSP的书写,也很简单:
<a href="down.do">下载</a>
这样就可以完成下载了!
好了,今天的知识点先总结到此!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。