ActionForm如何处理文件上传

avatar
作者
筋斗云
阅读量:0

在Java Web应用中,使用Struts框架的ActionForm类处理文件上传的过程如下:

  1. 在JSP页面中创建一个表单,设置表单的enctype属性为"multipart/form-data",这样才能上传文件。例如:
<form action="upload" method="post" enctype="multipart/form-data">     <input type="file" name="file" />     <input type="submit" value="Upload" /> </form> 
  1. 创建一个继承自ActionForm的类,例如FileUploadForm。在这个类中,定义一个File类型的属性用于接收上传的文件,例如:
import org.apache.struts.action.ActionForm; import java.io.File;  public class FileUploadForm extends ActionForm {     private File file;      // Getter and Setter methods for 'file' attribute     public File getFile() {         return file;     }      public void setFile(File file) {         this.file = file;     } } 
  1. 创建一个继承自Action的类,例如FileUploadAction。在这个类中,重写execute方法,并在其中调用FileUploadForm的validate方法进行表单验证。如果验证通过,使用ServletFileUpload类创建一个FileUpload对象,然后调用parseRequest方法解析请求,获取FileUploadForm对象。最后,从FileUploadForm对象中获取文件属性,并使用ServletFileUpload对象的getPart方法获取FilePart对象,进而获取文件名和内容类型等信息。例如:
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 org.apache.struts.upload.ServletFileUpload;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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 fileUploadForm = (FileUploadForm) form;          // Validate the form         if (!fileUploadForm.validate()) {             return mapping.findForward("error");         }          // Create a FileUpload object         ServletFileUpload fileUpload = new ServletFileUpload();          // Parse the request         try {             List<FileItem> fileItems = fileUpload.parseRequest(request);              // Get the uploaded file             FileItem fileItem = fileItems.get(0);             File uploadedFile = new File(getServletContext().getRealPath("") + File.separator + fileItem.getName());             fileItem.write(uploadedFile);              return mapping.findForward("success");         } catch (IOException e) {             e.printStackTrace();             return mapping.findForward("error");         }     } } 
  1. 配置Struts的struts.xml文件,将表单的action属性设置为FileUploadAction类的路径,例如:
<struts>     <package name="default" namespace="/" extends="struts-default">         <action name="upload" class="com.example.FileUploadAction">             <result name="success">/success.jsp</result>             <result name="error">/error.jsp</result>         </action>     </package> </struts> 

现在,当用户通过表单上传文件时,Struts会将文件信息传递给FileUploadAction类,然后处理文件并将其保存到服务器上。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!