阅读量:0
在Struts框架中,可以使用ActionForm来处理文件上传。以下是一个简单的示例,说明如何在ActionForm中处理文件上传:
- 首先,创建一个继承自
org.apache.struts.action.ActionForm
的类,例如FileUploadForm
。在这个类中,定义一个File
类型的属性,例如file
,用于存储上传的文件。
import org.apache.struts.action.ActionForm; import java.io.File; public class FileUploadForm extends ActionForm { private File file; // Getter and Setter methods for the file attribute public File getFile() { return file; } public void setFile(File file) { this.file = file; } }
- 接下来,创建一个继承自
org.apache.struts.action.Action
的类,例如FileUploadAction
。在这个类中,重写execute()
方法,用于处理文件上传。
import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import java.io.File; import java.io.IOException; public class FileUploadAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { FileUploadForm uploadForm = (FileUploadForm) form; File uploadedFile = uploadForm.getFile(); // Check if the file is selected if (uploadedFile != null && uploadedFile.getName().trim().length() > 0) { // Define the path to save the uploaded file String filePath = "/path/to/save/uploaded/files/"; File saveDir = new File(filePath); // Create the directory if it doesn't exist if (!saveDir.exists()) { saveDir.mkdir(); } // Define the file name String fileName = uploadedFile.getName(); // Save the uploaded file String filePathAndName = filePath + fileName; try { uploadedFile.renameTo(new File(filePathAndName)); } catch (IOException e) { e.printStackTrace(); return mapping.findForward("error"); } } else { return mapping.findForward("error"); } return mapping.findForward("success"); } }
- 在
struts-config.xml
文件中,配置FileUploadForm
和FileUploadAction
。
<struts-config> <!-- Other configurations --> <form-beans> <form-bean name="fileUploadForm" type="FileUploadForm" /> </form-beans> <action-mappings> <action path="/upload" type="FileUploadAction" name="fileUploadForm" scope="request"> <forward name="success" path="/success.jsp" /> <forward name="error" path="/error.jsp" /> </action> </action-mappings> </struts-config>
- 在HTML表单中,使用
<html:form>
标签创建一个表单,并设置enctype="multipart/form-data"
以支持文件上传。使用<html:file>
标签创建一个文件上传控件。
<!DOCTYPE html> <html> <head> <title>File Upload</title> </head> <body> <h1>File Upload</h1> <html:form action="/upload" method="post" enctype="multipart/form-data"> <html:file property="file" label="Upload File" /> <html:submit value="Upload" /> </html:form> </body> </html>
现在,当用户选择一个文件并点击“上传”按钮时,FileUploadAction
将处理文件上传,并将文件保存到指定的目录。根据上传是否成功,用户将被重定向到success.jsp
或error.jsp
页面。