/**
作者:Joe Vienneau
译者:Rifoo Technology(http://www.rifoo.com)
时间:2005-11-10
备注:转载请保留以上声明
**/
文件上传的简单范例
HTML
HTML页面需要做两件事情,首先,表单需要指定enctype="multipart/form-dataand",其次需要一个类型为file的<input>表单控件。
<form name="myForm" method="post"
action="/mywebapp/uploadMyFile.do"
enctype="multipart/form-data"> Select File: <input type="file" name="myFile">
</br> <input type="submit" value="Upload File"> </form>
JSP
上面的HTML标签用Struts标签代替就是以下代码:
<html:form action="/uploadMyFile.do"
enctype="multipart/form-data"> Select File: <html:file property="myFile"> </br> <html:submit value="Upload File"/> </html:form>
ActionForm
这个ActionForm需要一个FormFile类型的字段。
一般的ActionForm
import org.apache.struts.upload.FormFile;
public class MyActionForm extends ActionForm {
private FormFile myFile;
public void setMyFile(FormFile myFile) {
this.myFile = myfile;
}
public FormFile getMyFile() {
return myFile;
}
}
动态ActionForms
在struts-config.xml文件中写上:
<form-bean name="myForm"
type="org.apache.struts.action.DynaActionForm"> <form-property name="myFile"
type="org.apache.struts.upload.FormFile"/> </form-bean>
在Action中需要怎么写呢?
其实没什么特殊的,就象和得到其他属性一样,从ActionForm中得到FormFile属性,得到后可以随意进行处理。比如我们可以从FileForm中得到文件名,文件大小,文件内容
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
MyActionForm myForm = (MyActionForm)form;
// Process the FormFile
FormFile myFile = myForm.getMyFile();
String contentType = myFile.getContentType();
String fileName = myFile.getFileName();
int fileSize = myFile.getFileSize();
byte[] fileData = myFile.getFileData();
...
}
文件上传的配置
在struts-config.xml的<controller>element中可以设置如下参数来配置文件上传:
bufferSize - 处理文件上传的缓冲区大小,单位是字节。
默认是4096byte。maxFileSize - 允许上传文件的大小。可以使用K,M,G为单位。
默认是250M。multipartClass - muiltpart请求处理器类的全局标识名。默认是org.apache.struts.upload.CommonsMultipartRequestHandler
tempDir - 处理文件上传的临时目录。
还有一种可选的文件上传插件的方式可提供使用,那就是实现
org.apache.struts.upload.MultipartRequestHandler接口。
可以在struts-config.xml的<controller>的multipartClass
来指定这个实现给接口的类。
本文介绍文件上传的简单范例,包括HTML页面需指定表单enctype和添加file类型的input控件,JSP用Struts标签替代,ActionForm需FormFile类型字段。还说明了在Action中获取FormFile属性的方法,以及在struts - config.xml中配置文件上传的参数和可选插件方式。
1107

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



