StrutsFileUpload

王朝java/jsp·作者佚名  2006-01-27
窄屏简体版  字體: |||超大  

今天同事问我Struts如何解决文件上传的问题,一时间没有想起来,就到google查了一下,果然在Struts Wiki上就有非常详细的解释,抄录如下,详细的请看(http://wiki.apache.org/struts/StrutsFileUpload)

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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航