Services | Updates | Contact
Home | Ajax | BioInformatics | Dojo | EAI | EJB | Hibernate | J2ME | Java | Java Glossary | Java Servlets | JavaScript | Jboss | JDBC | JDO | Jmeter | JSF | JSP | JUnit | Maven | MySQL | Spring Framework | SQL | Struts | Technology | WAP | Web Services | XML
BoxLayout spacing
Invisible components can be added to a BoxLayout.
 
Learn to Set Up An Internal Private Repository For An Organization
We have set up an internal Maven Repository for our organisation so that the developers are not wasting time in searchi
 
More Tutorials...


    Loan Information     Struts     Open Source

Programming Tutorials: Ajax | Articles | JSP | Bioinformatics | Database | Free Books | Hibernate | J2EE | J2ME | Java | JavaScript | JDBC | JMS | Linux | MS Technology | PHP | RMI | Web-Services | Servlets | Struts | UML

 
 
Struts

 
Comments
 
 

 

Struts File Upload Example

                         

In this tutorial you will learn how to use Struts to write program to upload files. The interface org.apache.struts.upload.FormFile is the heart of the struts file upload application. This interface represents a file that has been uploaded by a client. It is the only interface or class in upload package which is typically referenced directly by a Struts application.

Creating Form Bean

Our form bean class contains only one property theFile,  which is of type org.apache.struts.upload.FormFile. Here is the code of FormBean (StrutsUploadForm.java):

package roseindia.net;


import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;



/**
@author Deepak Kumar
* @Web http://www.roseindia.net
* @Email roseindia_net@yahoo.com
*/

/**
 * Form bean for Struts File Upload.
 *
*/
public class StrutsUploadForm extends ActionForm
{
  private FormFile theFile;

  /**
   @return Returns the theFile.
   */
  public FormFile getTheFile() {
    return theFile;
  }
  /**
   @param theFile The FormFile to set.
   */
  public void setTheFile(FormFile theFile) {
    this.theFile = theFile;
  }
}

Creating Action Class

Our action class simply calls the getTheFile() function on the FormBean object to retrieve the reference of the uploaded file. Then the reference of the FormFile is used to get the uploaded file and its information. Here is the code of our action class(StrutsUploadAction.java):

package roseindia.net;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.FormFile;
/**
@author Deepak Kumar
* @Web http://www.roseindia.net
* @Email roseindia_net@yahoo.com
*/

/**
 * Struts File Upload Action Form.
 *
*/
public class StrutsUploadAction extends Action
{
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse responsethrows Exception{
    StrutsUploadForm myForm = (StrutsUploadForm)form;

        // Process the FormFile
        FormFile myFile = myForm.getTheFile();
        String contentType = myFile.getContentType();
        String fileName    = myFile.getFileName();
        int fileSize       = myFile.getFileSize();
        byte[] fileData    = myFile.getFileData();
    System.out.println("contentType: " + contentType);
    System.out.println("File Name: " + fileName);
    System.out.println("File Size: " + fileSize);
    
      return mapping.findForward("success");
  }
}

Defining form Bean in struts-config.xml file

Add the following entry in the struts-config.xml file for defining the form bean:

<form-bean
    name="FileUpload"
    type="roseindia.net.StrutsUploadForm"/>

Defining Action Mapping

Add the following action mapping entry in the struts-config.xml file:

<action
     path="/FileUpload"
     type="roseindia.net.StrutsUploadAction"
     name="FileUpload"
     scope="request"
     validate="true"
     input="/pages/FileUpload.jsp">
     <forward name="success" path="/pages/uploadsuccess.jsp"/>
</action>

Developing jsp page

Code of the jsp (FileUpload.jsp) file to upload is as follows:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html:html locale="true">
<head>
<title>Struts File Upload Example</title>
<html:base/>
</head>
<body bgcolor="white">
<html:form action="/FileUpload" method="post" enctype="multipart/form-data">
<table>
<tr>
<td align="center" colspan="2">
<font size="4">Please Enter the Following Details</font>
</tr>

<tr>
<td align="left" colspan="2">
<font color="red"><html:errors/></font>
</tr>



<tr>
<td align="right">
File Name
</td>
<td align="left">
<html:file property="theFile"/> 
</td>
</tr>


<tr>
<td align="center" colspan="2">
<html:submit>Upload File</html:submit>
</td>
</tr>
</table>


</html:form>
</body>
</html:html>

Note that we are setting the encrypt property of the form to enctype="multipart/form-data".

code for the success page (uploadsuccess.jsp) is:

<html>

<head>
<title>Success</title>
</head>

<body>

<p align="center"><font size="5" color="#000080">File Successfully Received</font></p>

</body>

</html>

Add the following line in the index.jsp to call the form.

<li>
<html:link page="/pages/FileUpload.jsp">Struts File Upload</html:link>
<br>
Example shows you how to Upload File with Struts.
</li>

Building Example and Testing

To build and deploy the application go to Struts\strutstutorial directory and type ant on the command prompt. This will deploy the application. Open the browser and navigate to the FileUpload.jsp page. Your browser should display the file upload form:
  

                         


 

Facing Programming Problem?
Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 

Current Comments

131 comments so far (post your own) View All Comments Latest 10 Comments:

hi,

i want code pagenation code in jsp.

Posted by Nageswara Rao on Wednesday, 04.30.08 @ 11:49am | #58192

I have a question in the above example,it doesn't mention how the browser works?
what i want to do in my app. is click on a "browse" button so it opens a browser so that i can browse my computer and select a file (i want to get the filename along with the path) how can i do that ? is there an example or an already-made tutorial ?
p.s.:i'm working on windows xp

thanks

Posted by omar on Sunday, 03.23.08 @ 17:53pm | #53941

I have a question in the above example,it doesn't mention how the browser works?
what i want to do in my app. is click on a "browse" button so it opens a browser so that i can browse my computer and select a file (i want to get the filename along with the path) how can i do that ? is there an example or an already-made tutorial ?
p.s.:i'm working on windows xp
thanks,
omar

Posted by omar on Sunday, 03.23.08 @ 17:47pm | #53940

Can anybody tell me how to set the destination path for the uploaded file?
where is the uploaded file saved?

Posted by Mrinal Shahi on Sunday, 03.2.08 @ 14:02pm | #50929

How can I achieve the same using org.apache.struts.upload.FormFile and DynaValidatorForm ?

For example, if I dont give any file name in my form (using firefox), how do I validate the values if its empty or not in the action class?

FormFile installerFile = (FormFile)theForm.get("installerFile");

This returns me empty... but validating theForm.get("installerFile") against null or "" passes thru the if block.. doesn't make sense at all :-(

FormFile installerFile = null;
if(!theForm.get("installerFile").equals("")) {
System.out.println("Inside theForm.get(installerfile) != null or empty");
installerFile = (FormFile)theForm.get("installerFile");
}

I can see the sys print... any help ?

Regards
softguy


Posted by softguy on Wednesday, 02.27.08 @ 05:31am | #50179

i want an code for an application using struts and jdbc.To enter data into the database and to retrieve
from the database.

Please do the needful

Posted by syam on Tuesday, 02.26.08 @ 22:56pm | #50161

how to write a code for downloading a file in struts format

Posted by priya on Wednesday, 01.30.08 @ 13:33pm | #46580

thanx its pretty useful!!

Posted by strutsUser on Thursday, 01.24.08 @ 12:23pm | #45988

"mthahir - I am getting an error javax.servlet.jsp.JspException: Cannot retrieve mapping for action /FileUpload"

I believe the reason you are getting the error is that you have no form set when linking directly to the jsp which causes the error since it is looking for some form input. Instead of having your index.jsp link, link directly to a jsp, have it go thru an action forward to /FileUpload.do.

This should also solve the issues with the NULL Pointer Exceptions.

Posted by shu on Thursday, 01.24.08 @ 03:51am | #45956


This is good example to start with.

I have requirement where i need to restrict the size of the file to say 500KB without uploading the complete BIG file, say 20MB. Is there any solution to this?

PS: I need this without uploading the whole file. so expecting an early response to the user that he cannot upload file size beyond 500KB.

Thanks in advance
Nissi

Posted by nissi on Wednesday, 01.23.08 @ 17:06pm | #45903

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

  EAI Articles
  Java Certification
Tell A Friend
Your Friend Name
Search Tutorials

 

 
 
Browse all Java Tutorials
Java JSP Struts Servlets Hibernate XML
Ajax JDBC EJB MySQL JavaScript JSF
Maven2 Tutorial JEE5 Tutorial Java Threading Tutorial Photoshop Tutorials Linux Technology
Technology Revolutions Eclipse Spring Tutorial Bioinformatics Tutorials Tools SQL
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2007. All rights reserved.