Struts File Upload

Struts File Upload.

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 response) throws 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>
  </td></tr>
  <tr><td align="left" colspan="2">
  <font color="red"><html:errors/></font>
  </td></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

이 글의 관련글
  • 자바 제한자 정리 : Modifires Matrix in Java
  • 소켓통신 서버/클라이언트 통신시 IO Blocking 상태에 빠지는 코드와 해결 방안
  • Java VisualVM
  • JAVA 5 한글 api
  • Struts 2.1 + ajax 플러그인 : dojo툴킷 이용 방법 변경
  • JDK 7 에서 기본 제공했으면하는 메소드는?
  • Java Profiler JProbe 8.0 출시!! :: 자바 프로파일러
  • 자바 파일복사 코드와 성능 1. :: Java File Copy Code & Perfomance Issue. part 1 (4)
  • 넷빈즈 6.5 출시 (NetBeans 6.5 released)
  • 2007/05/24 01:50 2007/05/24 01:50
    Trackback Address:http://www.yunsobi.com/blog/trackback/89
    [로그인][오픈아이디란?]