在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: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
頁面。