1.JSP页面
<form id="myForm" method="post" action="/archive/testUploadAction.do?method=upload" class="pageForm required-validate"
enctype="multipart/form-data" οnsubmit="return iframeCallback(this,dialogAjaxDone);">
<input type="text" name="headerIdentifier" />
<input type="text" name="headerType" />
<table id="tb">
</table>
<input type="button" name="btnAddFile" value="添加文件" οnclick="additem('tb')" />
<input type="submit" name="btnSubmit" value="提交" />
</form>
2.FormBean类
package com.gxzx.form;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts.upload.FormFile;
import org.apache.struts.validator.ValidatorForm;
public class ElectronictDocumentForm extends ValidatorForm {
private static final long serialVersionUID = 1090512723368950814L;
//=============封首begin=================
private String id;
//信件标识符
private String headerIdentifier;
//信封类型
private String headerType;
...
private List<UploadFile> uploadFiles;
public ElectronictDocumentForm() {
uploadFiles = new ArrayList<UploadFile>();
uploadFiles.add(new UploadFile());
}
public UploadFile getUploadFile(int index) {
int size = uploadFiles.size();
//注意这个方法的定义 不加中间的循环是会出错的
if (index > size - 1) {
for (int i = 0; i < index - size + 1; i++) {
uploadFiles.add(new UploadFile());
}
}
return (UploadFile) uploadFiles.get(index);
}
...
public List<UploadFile> getUploadFiles() {
return uploadFiles;
}
public void setUploadFiles(List<UploadFile> uploadFiles) {
this.uploadFiles = uploadFiles;
}
}
package com.gxzx.form;
import java.io.Serializable;
import org.apache.struts.upload.FormFile;
public class UploadFile implements Serializable{
private static final long serialVersionUID = -690837677554339383L;
private FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
}
3.Action类
package com.gxzx.action;
import java.io.FileOutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.gxzx.form.ElectronictDocumentForm;
import com.gxzx.form.UploadFile;
import com.sinosoft.workbench.dwz.constant.DwzContants;
import com.sinosoft.workbench.dwz.rp.DwzBaseAction;
public class TestUploadAction extends DwzBaseAction{
public void upload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ElectronictDocumentForm eform = (ElectronictDocumentForm)form;
System.out.println(eform.getHeaderIdentifier());
System.out.println(eform.getHeaderType());
List<UploadFile> files = eform.getUploadFiles();
try {
for(int i=0;i<files.size();i++){
UploadFile uploadFile = (UploadFile) files.get(i);
FormFile file = uploadFile.getFile();
FileOutputStream outer = new FileOutputStream("d:\\"+file.getFileName());
byte[] buffer = file.getFileData();
outer.write(buffer);
outer.close();
file.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
dwzAjaxDoneCloseCurrent(response,"发文成功","");
}
}
4.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<!-- FormBeans -->
<form-beans>
<form-bean name="ArchiveInVOE" type="com.sinosoft.oa.archive.in.form.ArchiveInVOE" />
<form-bean name="ArchiveOutVOE" type="com.sinosoft.oa.archive.out.form.ArchiveOutVOE" />
<form-bean name="ArchiveSignVOE" type="com.sinosoft.oa.archive.sign.form.ArchiveSignVOE" />
<form-bean name="ArchiveCodeVOE" type="com.sinosoft.oa.archive.code.form.ArchiveCodeVOE" />
<form-bean name="ElectronictVOE" type="com.gxzx.entity.ElectronicOfficialDocument" />
<form-bean name="TestUploadVOE" type="com.gxzx.form.ElectronictDocumentForm"/>
</form-beans>
<!-- GlobalExceptions -->
<global-exceptions />
<!-- GlobalForwards -->
<global-forwards>
<forward name="workflow" path="/../jsp/workflow/engine/workflow.jsp"/>
<forward name="disKillFlow" path="/../jsp/workflow/engine/disKillFlow.jsp"/>
<forward name="manualDossier" path="/../jsp/oa/archive/common/manualDossier.jsp"/>
</global-forwards>
<!-- ActionMappings -->
<action-mappings>
<!-- 自治区收发文 Start -->
<action name="ElectronictVOE" scope="request" path="/ElectronictAction" type="com.gxzx.action.ElectronictDocumentAction" parameter="method">
<forward name="success" path="/../jsp/zzqoa/archive/out/create_out.jsp"/>
</action>
<action scope="request" path="/ElectronictFileAction" type="com.gxzx.action.ElectronicFileAction" parameter="method">
<forward name="success" path="/../jsp/zzqoa/archive/out/create_out.jsp"/>
</action>
<action name="TestUploadVOE" scope="request" path="/testUploadAction" type="com.gxzx.action.TestUploadAction" parameter="method">
<forward name="success" path="/../testUpload.jsp"/>
<forward name="init" path="/../uploadtest.jsp"/>
</action>
<!-- 自治区收发文 End -->
<!-- 收文 Start -->
<action name="ArchiveInVOE" scope="request" path="/ArchiveInAction" type="com.sinosoft.oa.archive.in.rp.ArchiveInAction" parameter="method">
<forward name="archive" path="/../jsp/oa/archive/in/archive.jsp"/>
<forward name="archive_read" path="/../jsp/oa/archive/in/archive_read.jsp"/>
<forward name="list" path="/../jsp/oa/archive/in/list.jsp"/>
<forward name="manual_archive" path="/../jsp/oa/archive/in/manual_archive.jsp"/>
</action>
<!-- 收文 End -->
<!-- 发文 Start -->
<action name="ArchiveOutVOE" scope="request" path="/ArchiveOutZXAction" type="com.sinosoft.oa.archive.out.rp.ArchiveOutZXAction" parameter="method">
<forward name="archive" path="/../jsp/oa/archive/out/zx/archive.jsp"/>
<forward name="archive_read" path="/../jsp/oa/archive/out/zx/archive_read.jsp"/>
<forward name="list" path="/../jsp/oa/archive/out/zx/list.jsp"/>
<forward name="manual_archive" path="/../jsp/oa/archive/out/zx/manual_archive.jsp"/>
</action>
<!-- 发文 End -->
<!-- 文号管理 Start -->
<action name="ArchiveCodeVOE" scope="request" path="/ArchiveCodeAction" type="com.sinosoft.oa.archive.code.rp.ArchiveCodeAction" parameter="method">
<forward name="list" path="/../jsp/oa/archive/code/code.jsp"/>
</action>
<!-- 文号管理 End -->
<!-- 签报 Start -->
<action name="ArchiveSignVOE" scope="request" path="/ArchiveSignZXAction" type="com.sinosoft.oa.archive.sign.rp.ArchiveSignZXAction" parameter="method">
<forward name="archive" path="/../jsp/oa/archive/sign/zx/archive.jsp"/>
<forward name="archive_read" path="/../jsp/oa/archive/sign/zx/archive_read.jsp"/>
<forward name="list" path="/../jsp/oa/archive/sign/zx/list.jsp"/>
<forward name="manual_archive" path="/../jsp/oa/archive/sign/zx/manual_archive.jsp"/>
</action>
<!-- 签报 End -->
</action-mappings>
<!-- ApplicationResources -->
<message-resources null="true"
parameter="com.sinosoft.module.system.common.ApplicationResources" />
<!-- ValidatorPlugIn -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml" />
</plug-in>
</struts-config>