ActionForm之文件上传

我们以一个例子来说明ActionForm之文件上传: (不需要引入任何jar包)

 

在页面建一表单:

<li>测试struts上传文件</li><br>
   <form action="upload.do" method="post" enctype="multipart/form-data">//enctype="multipart/form-data"这个属性就是用于上传的,需要添加
    标题:<input type="text" name="title"><br>
    文件:<input type="file" name="myfile"><br>//type类型为file
    <input type="submit" value="提交">
   </form>

 

建立上传成功的页面:

在这个页面取出上传的文件的名字,包括标题:

<body>
 标题:${uploadForm.title}<br>//从ActionForm中取出
 文件名:${uploadForm.myfile.fileName  }<br>
</body>

 

建立ActionForm(使用静态的):

 

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/**
 * 上传ActionForm
 * @author Administrator
 *
 */
public class UploadActionForm extends ActionForm {

 private String title;
 
 //必须采用FormFile
 private FormFile myfile;//文件的类型声明为FormFile,必须这样声明,使用这个来接收文件

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public FormFile getMyfile() {
  return myfile;
 }

 public void setMyfile(FormFile myfile) {
  this.myfile = myfile;
 }

 

再写相应的action:

/**
 * 上传Action
 * @author Administrator
 *
 */
public class UploadTestAction extends Action {

 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  UploadActionForm uaf = (UploadActionForm)form;//得到表单数据
  System.out.println("title" + uaf.getTitle());//得到标题
  FormFile myFile = uaf.getMyfile();//new一个FormFile,就会把这个文件放进去,也就得到这个文件(在action中调用FormFile,就可以得到上传文件)
  if (myFile != null) {
   System.out.println("fileName=" + myFile.getFileName());//通过这个对象可以得到文件的名字,文件的类型,大小,详细见文档
   
   FileOutputStream fos = new FileOutputStream("c:\\" + myFile.getFileName());//new一个输出流,并存在C盘,名字就叫他自己的名字
   fos.write(myFile.getFileData());//写入硬盘
   fos.flush();
   fos.close();
  }
  return mapping.findForward("success");
 }

}

}

做相应的配置

测试就OK了

 

 

 

 

对可上传的文件大小以及临时目录包括缓存的配置:

实现这个功能是在struts-config.xml中配置的,

</action-mappings>
 
 <controller maxFileSize="10M"  nocache ="true"/>//controller 这个标签,有很多属性,具体使用见DTD(位于struts.jar中的org.apache.struts.resource中的struts-config-1-2.dtd内),nocache ="true"表示每次都会清理缓存
 
 <plug-in className="com.bjsxt.struts.UtilDateConverterInitWithPlugin"/>
</struts-config>

 

 

步骤总结:

* 页面的配置,如:
  <form action="upload.do" method="post" enctype="multipart/form-data">
    标题:<input type="text" name="title"><br>
    文件:<input type="file" name="myfile"><br>
    <input type="submit" value="提交">
   </form>
  * ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java
  * 在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,参见:UploadTestAction.java
  * 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>
  


 

 

 

转载于:https://www.cnblogs.com/liuyang-1037/archive/2009/03/11/1409038.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值