fileLoad.jsp
代碼如下:
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head>
<title>
fileLoad.jsp
</title>
</head>
<body>
<h1>JBuilder Generated Struts JSP for ActionForm forms.LoadForm</h1>
<p>
<html:form action="/loadAction.do" method="POST" enctype="multipart/form-data">
<html:file property="file"/><br />//對應于ActionFrom的FormFile file屬性。
<html:submit property="submit" value="Submit"/>
<html:reset value ="Reset"/>
</html:form>
<p>
<logic:notEmpty name="loadForm" property="fname">
? name:<bean:write name="loadForm" property="fname"/>
? size:<bean:write name="loadForm" property="size"/>
</logic:notEmpty>
</p>
</body>
</html:html>
LoadForm的代碼:
package forms;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
public class LoadForm extends ActionForm {
??? private FormFile file;
??? private String fname;
??? private String size;
??? public FormFile getFile() {
??????? return file;
??? }
??? public void setFile(FormFile file) {
??????? this.file = file;
??? }
??? public void setSize(String size) {
??????? this.size = size;
??? }
??? public void setFname(String fname) {
??????? this.fname = fname;
??? }
??? public String getFname() {
??????? return fname;
??? }
??? public String getSize() {
??????? return size;
??? }
??? public ActionErrors validate(ActionMapping actionMapping,
???????????????????????????????? HttpServletRequest httpServletRequest) {
??????????? /** @todo: finish this method, this is just the skeleton.*/
??????? return null;
??? }
??? public void reset(ActionMapping actionMapping,
????????????????????? HttpServletRequest servletRequest) {
??? }
}
LoginAction代碼如下:
package actions;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import forms.LoadForm;
import org.apache.struts.action.Action;
import org.apache.struts.upload.FormFile;
import java.io.*;
public class LoadAction extends Action {
??? public ActionForward execute(ActionMapping actionMapping,
???????????????????????????????? ActionForm actionForm,
???????????????????????????????? HttpServletRequest servletRequest,
???????????????????????????????? HttpServletResponse servletResponse)throws Exception {
??????? LoadForm loadForm = (LoadForm) actionForm;
?????? FormFile ff=loadForm.getFile();
?????? if(ff==null)
?????? {
?????????? return actionMapping.findForward("success");
?????? }
?????? String fname=ff.getFileName();
?????? String size=Integer.toString(ff.getFileSize())+"bytes";
?????? InputStream in=ff.getInputStream();
?????? OutputStream out=new FileOutputStream("/"+fname);
?????? int bytesRead=0;
?????? byte[] buffer=new byte[8192];
?????? while((bytesRead=in.read(buffer,0,8192))!=-1)
?????? {
?????????? out.write(buffer,0,bytesRead);
?????? }
?????? out.close();
?????? in.close();
????? loadForm.setFname(fname);
????? loadForm.setSize(size);
????? ff.destroy();
????? return actionMapping.findForward("success");
????? }
}
struts-config.xml代碼:
<?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>
? <form-beans>
??? <form-bean name="loadForm" type="forms.LoadForm" />
? </form-beans>
? <action-mappings>
??? <action name="loadForm" path="/loadAction" scope="request" type="actions.LoadAction" input="/fileLoad.jsp">
<forward name="success" path="/fileLoad.jsp">
</forward>
</action>? </action-mappings>
</struts-config>
說明:<html:file>標簽可以方便的實現文件上傳功能。
有以下幾點需要注意:
1: <html:file>必須嵌套在<html:form>標簽中。
2:<html:form>標簽的method的屬性必須設為"post".
3:<html:form>標簽的編碼類型enctype屬性必須為"multipart/form-data"。
4:<html:file>標簽必須設為property屬性,這個屬性和ActionForm Bean中FormFile類型的屬性對應。
posted on 2006-08-17 18:56
SIMONE 閱讀(340)
評論(0) 編輯 收藏