1. HTML code snippet for file upload:<FORM name="uploadForm" ENCTYPE='multipart/form-data' method="POST" action="/Upload.do">
    <LABEL FOR="theFile">File to be Uploaded:</LABEL>
    <INPUT TYPE="file" NAME="myFile">
    <INPUT TYPE="submit" NAME="uploadButton" value="Upload File">
</FORM>
You need to specify 
ENCTYPE attribute of the FORM as '
multipart/form-data' to submit the file as a part of POST request.
2. Create an ActionForm:
ActionForm has a property having same name as file input field in the HTML (<INPUT TYPE="file" NAME="myFile">)
    public class UploadFileForm extends ActionForm {            private FormFile myFile;            public FormFile getMyFile() {                    return myFile;    }    public void setMyFile(FormFile file) {        this.myFile = file;    }    }3. Changes in struts-config.xmlForm Bean:
    <form-beans>
        <form-bean name="uploadFileForm" type="com.shashank.UploadFileForm">
    </form-bean>
Action Mapping:
 <action-mappings>
     <action path="/Upload" type="com.shashank.UploadAction" name="uploadFileForm">
         <forward name="success" path="/jsp/Uploader.jsp" />
         <forward name="failure" path="/jsp/error.jsp" />
     </action>
 <action-mappings>
4. Action Class:public class UploadAction extends Action {
   public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
       try {
           UploadFileForm fileForm = (UploadFileForm)form;
           FormFile myFile = fileForm.getMyFile();
           if (myFile != null) {
               String fileName    = myFile.getFileName();
               String filePath = "/upload";            //define the directory where you need to upload
               /* Save file on the server */
               if(!fileName.equals("")) {
                   File file = new File(filePath );
                   file.mkdirs();                 
                   File fileToCreate = new File(filePath, fileName);
                   if(!fileToCreate.exists()) {
                       FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
                       fileOutStream.write(myFile.getFileData());
                       fileOutStream.flush();
                       fileOutStream.close();
                                                    }             // END :  if(!fileToCreate.exists())
               } // END : if(!fileName.equals(""))
           } // END :  if (myFile != null)
       } catch (Exception e) {
                           e.printStackTrace();
               }
   }            // END of execute()
 }
This article has now moved to my new 
BLOG.
Labels: AJAX, ENCTYPE, file, form, html, Java, multipart/form-data, server, Struts, Upload