StrutsFileUpload使用简单例子
2006-11-01 14:54
471 查看
StrutsFileUpload
File Upload - Simple Example
HTML
This isn't specific to Struts, but gives a simple example of the HTML required to upload a single file.
Two things are needed in the html page. Firstly, the form needs to specify an enctype of multipart/form-data and secondly an form control of type file.
JSP
The above HTML can be generated using the Struts tags in the following way
<html:form action="/uploadMyFile.do" enctype="multipart/form-data">
Select File: <html:file property="myFile">
<html:submit value="Upload File"/>
</html:form>
ActionForm
The ActionForm needs a property of type FormFile.
Regular ActionForms
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;
}
}
Dyna ActionForms
In the 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>
Whats Needed in the Action
Nothing special really, just retrieve the FormFile from the ActionForm, as you would any other property, and process it as you like. You can get the file name, size and file contents from the FormFile.
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();
...
}
File Upload Configuration
The following parameters can be set in the <controller> element of the struts-config.xml to configure file upload:
bufferSize - The size (in bytes) of the input buffer used when processing file uploads. Default is 4096.
maxFileSize - The maximum size (in bytes) of a file to be accepted as a file upload. Can be expressed as a number followed by a "K", "M", or "G", which are interpreted to mean kilobytes, megabytes, or gigabytes, respectively. Default is 250M.
multipartClass - The fully qualified Java class name of the multipart request handler class to be used with this module. Defaults is org.apache.struts.upload.CommonsMultipartRequestHandler.
tempDir - Temporary working directory to use when processing file uploads.
Above taken from the Configuration section in the User Guide.
Plugging in an Alternative File Upload Mechanism
By default Struts uses Commons File Upload.
Alternative implementations can be plugged as long as they implement the org.apache.struts.upload.MultipartRequestHandler interface and Struts configured to use that implementation by specifying it in the multipartClass parameter in the <controller> element of the struts-config.xml
Fair Warning: The MultipartRequestHandler interface is almost certain to change in a Struts 1.3 or higher release.
File Upload - Simple Example
HTML
This isn't specific to Struts, but gives a simple example of the HTML required to upload a single file.
Two things are needed in the html page. Firstly, the form needs to specify an enctype of multipart/form-data and secondly an form control of type file.
JSP
The above HTML can be generated using the Struts tags in the following way
<html:form action="/uploadMyFile.do" enctype="multipart/form-data">
Select File: <html:file property="myFile">
<html:submit value="Upload File"/>
</html:form>
ActionForm
The ActionForm needs a property of type FormFile.
Regular ActionForms
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;
}
}
Dyna ActionForms
In the 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>
Whats Needed in the Action
Nothing special really, just retrieve the FormFile from the ActionForm, as you would any other property, and process it as you like. You can get the file name, size and file contents from the FormFile.
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();
...
}
File Upload Configuration
The following parameters can be set in the <controller> element of the struts-config.xml to configure file upload:
bufferSize - The size (in bytes) of the input buffer used when processing file uploads. Default is 4096.
maxFileSize - The maximum size (in bytes) of a file to be accepted as a file upload. Can be expressed as a number followed by a "K", "M", or "G", which are interpreted to mean kilobytes, megabytes, or gigabytes, respectively. Default is 250M.
multipartClass - The fully qualified Java class name of the multipart request handler class to be used with this module. Defaults is org.apache.struts.upload.CommonsMultipartRequestHandler.
tempDir - Temporary working directory to use when processing file uploads.
Above taken from the Configuration section in the User Guide.
Plugging in an Alternative File Upload Mechanism
By default Struts uses Commons File Upload.
Alternative implementations can be plugged as long as they implement the org.apache.struts.upload.MultipartRequestHandler interface and Struts configured to use that implementation by specifying it in the multipartClass parameter in the <controller> element of the struts-config.xml
Fair Warning: The MultipartRequestHandler interface is almost certain to change in a Struts 1.3 or higher release.
相关文章推荐
- 使用Struts1.2 Validator验证框架的简单例子
- struts中动态表单(DynaActionForm)的使用(超简单例子)
- Struts中使用commons-fileupload实现上传例子
- struts拦截器的使用(简单例子)
- Struts 2 校验器的使用例子
- 怎样管理C++类中的指针成员 和 简单的c++智能指针使用的例子
- File对象相关方法使用简单例子
- 在.Net中使用AnyChart的简单例子(下)
- PHP通过COM使用ADODB的简单例子
- 使用jmeter进行接口测试的一个简单例子。
- 关于java中Properties类的简单的使用例子
- 简单的并发编程中犯2的一个小例子--CAS使用时一定要考虑下是否有必要做轮询
- .net中使用反射的简单例子
- Google Test Frame 简单使用例子
- centos7 最简单的git服务器与客户端使用例子
- Java 序列化--- Kryo使用简单例子
- C#枚举(enum)例子与简单使用说明
- ext4.2入门简单小例子(button的事件--对话框的几种使用情况)
- 使用Eclipse+maven3插件开发一个Servlet3.0的简单例子
- Spring中配合hibernate使用的简单例子