Hi, I am new to sturts2. I am trying to upload a jpg image using Struts2 but
no luck till now. It will be great if someone could help me in moving
further.

I am using Struts 2.0.8 and i have commons-fileupload-1.2.jar and
commons-io-1.3.2.jar in classpath

I put debug statement in setter methods. I can see even setter methods are
not getting invoked. File, FileName, ContentType are all null at Action
class.

My code looks like below.

MyPhoto.jsp

<s:form method="post" action="myPhotoUpload" enctype="multipart/form-data">
<s:file name="myPhoto" cssClass="textbox1" accept="image/*" />
<s:submit name="method:upload" cssClass="btn" value="Upload" />
</s:form>

Action class: MyPhotoUploadAction.java

    private File myPhoto;//The actual file
    private String myPhotoContentType; //The content type of the file
    private String myPhotoFileName; //The uploaded file name

     public File getMyPhoto() {
        return myPhoto;
      }

      public void setMyPhoto(File myPhoto) {
         this.myPhoto = myPhoto;
      }

      public String getMyPhotoContentType() {
        return myPhotoContentType;
      }

      public void setMyPhotoContentType(String myPhotoContentType) {
         this.myPhotoContentType = myPhotoContentType;
      }

      public String getMyPhotoFileName() {
        return myPhotoFileName;
      }

      public void setMyPhotoFileName(String myPhotoFileName) {
           this.myPhotoFileName = myPhotoFileName;
      }

      public String upload() {
         try{
             File destDir = new File("images/member");
             FileUtils.copyFileToDirectory (getMyPhoto(), destDir);
             return SUCCESS; // redirect to welcome page.
         }catch(Exception exp){
             LOG.error("File Upload Error:"+ exp);
             this.addActionError("File Upload Error:"+ exp);
             return ERROR;
         }
      }


Struts.xml
<struts>
    <package name="Non-RPC" namespace="/" extends="tiles-default">
<result-types>

            <result-type name="tiles" class="
org.apache.struts2.views.tiles.TilesResult" default="true" />
        </result-types>

<action name="myPhotoUpload_*" method="{1}" class="
com.rawatsoft.write4smile.webapp.action.MyPhotoUploadAction">
            <interceptor-ref name="fileUpload">
                  <param name="allowedTypes">
                    image/*
                </param>
            </interceptor-ref>
            <interceptor-ref name="basicStack"/>
            <result name="input">myPhotoUpload</result>
        </action>
 </package>

web.xml

    <filter>
        <filter-name>struts-cleanup</filter-name>
        
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

    </filter>

    <filter>
        <filter-name>openSessionInViewFilter</filter-name>
        <filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
    </filter>

    <filter>
        <filter-name>filterDispatcher</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>openSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>filterDispatcher</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>
org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
    </listener>

Reply via email to