




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Struts1 文件上传 在Web程序中的上传文件的功能一般会使用标签在客户端显示输入要上传的文件名的用户接口。如果读者使用过JSP/Servlet来处理客户端上传的文件就会知道,实现这个功能并不是很容易。而在Struts中为我们提供了一种机制,可以非常方便地将客户端上传的文件保存在服务端。 在Struts Html标签库中提供了一个标签,可以和FormFile类型的属性一起使用。通过这个属性返回的FormFile对象,就可以很方便地获得上传文件的InputStream对象,并做进一步地处理。 在Struts中,一个FormFile对象代表一个上传的文件。FormFile实际上是一个接口,我们可以在org.apache.struts.upload包中找到这个接口。FormFile接口有如下五个常用的方法: 1. getInputStream()方法 这个方法用于获得上传文件的java.io.InputStream对象,我们可以从这个InputStream对象中读取上传文件的数据,并将其写到服务端指定的路径下。 2. getFileData()方法 这个方法用于将上传文件的整个内容放到一个byte类型的数组中,如果上传文件的尺寸比较小的话,使用这个方法可以很方便地将上传文件保存到在服务端的指定路径中。 3. getFileName()方法 这个方法用于获得上传文件的文件名(不包括文件在客户机的路径部分)。 4. getFileSize()方法 这个方法用于获得上传文件的字节数。 5. destroy()方法 用于销毁所有和当前上传文件相关的资源。 下面的例子演示了如何使用标签和FormFile对象来上传单个文件。实现这个例子需要如下六步: 【第1步】建立上传文件的JSP页面 在目录中建立一个uploadFile.jsp文件,代码如下: 上传单个文件(文件大小不能超过2M) %- 在标签中必须加enctype=multipart/form-data -% %- 使用标签让用户输入上传文件名 -% 【第2步】建立ActionForm的子类 在srcactionform目录中建立一个UploadForm.java文件,代码如下: package actionform; import org.apache.struts.action.*; import org.apache.struts.upload.FormFile; public class UploadForm extends ActionForm private FormFile myFile; / 这个myFile代表要上传的文件 public FormFile getMyFile() return myFile; public void setMyFile(FormFile myFile) this.myFile = myFile; 【第3步】建立Struts动作类(Action的子类) 在Struts中,一般在Struts的动作类中处理上传的文件。在srcaction目录中建立一个UploadAction.java文件,代码如下: package action; import javax.servlet.http.*; import org.apache.struts.action.*; import org.apache.struts.upload.FormFile; import java.io.*; import actionform.*; public class UploadAction extends Action protected void saveFile(FormFile formFile) throws Exception / 从web.xml文件中获得指定的上传路径 String path = this.getServlet().getServletConfig().getInitParameter(uploadPath); InputStream in = formFile.getInputStream(); / 获得上传文件的InputStream / 在服务端指定的上传路径中建立一个空的文件(文件名为getFileName()方法返回的值) FileOutputStream fout = new FileOutputStream(path + formFile.getFileName(); byte buffer = new byte8192; int count = 0; / 开始向上传路径中刚建立的文件写入数据,每次写8k字节 while (count = in.read(buffer) 0) fout.write(buffer, 0, count); fout.close(); formFile.destroy(); / 上传成功后,销毁当前上传文件的资源 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) UploadForm uForm = (UploadForm) form; PrintWriter out = null; try response.setCharacterEncoding(GBK); out = response.getWriter(); saveFile(uForm.getMyFile(); / 将上传文件保存到指写的路径(在web.xml中配置) out.println(上传文件成功.); catch (Exception e) out.println(e.getMessage(); return null; 在saveFile方法中,首先从web.xml的Servlet初始化参数中获得一个用于保存上传文件的路径。然后从FormFile对象中获得上传文件的InputStream对象,并对这个InputStream对象中的字节进行循环读取,并写到新的文件中。最后,在上传成功后,将FormFile 对象销毁。 【第4步】配置struts-config.xml 在这一步来配置一下在第2步和第3步分别建立的ActionForm和Action的子类。打开struts-config.xml文件,在中加入如下的子标签: 在中加入如下的子标签: 【第5步】设置用于保存上传文件的路径 打开web.xml文件,找到一个叫action的Servlet(也就是用于处理Struts动作的Servlet),并在中加入如下的子标签(假设保存上传文件的路径为D:upload,路径的最后一个字符必须是“”): uploadPath D:upload 【第6步】限制上传文件的大小 这一步是可选的,如果不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025ktv员工培训服务合同范本
- 作业纪律管理制度
- 作风效能管理制度
- 供应开发管理制度
- 供暖施工管理制度
- 湖南第一师范学院《非煤矿山开采》2023-2024学年第二学期期末试卷
- 供电巡视管理制度
- 河北师范大学汇华学院《市场营销学D》2023-2024学年第二学期期末试卷
- 重庆旅游职业学院《艺用人体解剖与透视》2023-2024学年第二学期期末试卷
- 保函客户管理制度
- GB/T 36478.4-2019物联网信息交换和共享第4部分:数据接口
- GB/T 1690-2010硫化橡胶或热塑性橡胶耐液体试验方法
- 印制电路板领域:深南电路企业组织结构及部门职责
- 年产120万吨氧化铝拜尔法生产高压溶出工艺设计
- 《哈尔滨工程大学学报》模板
- DB14T 1049.1-2020 山西省用水定额 第1部分:农业用水定额
- 配载平衡基础培训
- 医疗废物管理相关法律、法规介绍
- 漯河医学高等专科学校辅导员招聘考试行政管理教师岗笔试面试历年真题库试卷
- 政审在校证明
- 变电站一次通流-通压试验方法的探讨与实践
评论
0/150
提交评论