Tuesday, 21 June 2011

Java Servlet for uploading file

import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.File;
import java.util.List;


public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = -3208409086358916855L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
         response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
        List items = null;
        try {
        if (isMultipart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
        
        
            items = upload.parseRequest(request);
         }
        } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

         String root = getServletContext().getRealPath("/");
         String osName = System.getProperty("os.name");
     //    File path = new File(root + "/uploads");
         
          System.out.println("

root : "+getServletContext().getRealPath("/")+"

"); File path = null; File pathUnzip = null; // File path = new File("D:\\test\\"); if(osName.startsWith("Win")){ path = new File("..\\webapps\\"); }else{ path = new File("..//webapps//"); } System.out.println("path : "+path); UploadAllMethod uClass = new UploadAllMethod(); uClass.DownloadWebappsMethod(items,path); System.out.println("Download Webapps Method Completed"); if(osName.startsWith("Win")){ path = new File("..\\webapps\\test.zip"); pathUnzip = new File("..\\webapps"); }else{ path = new File("..//webapps//test.zip"); pathUnzip = new File("..//webapps"); } System.out.println("path : "+path); System.out.println("pathUnzip : "+pathUnzip); uClass.UnZipWebappsMethod(path,pathUnzip,osName); System.out.println("UnZipWebappsMethod Completed"); System.out.println("Deploy Completed"); System.out.println("Server Started Now"); out.println("

UnZipWebappsMethod Completed

"); out.println("

Deploy Completed

"); out.println("

Server Started Now

"); } }

Supporting UploadAllMethod.java classes

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipInputStream;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;

public class UploadAllMethod {

     public void ZipWebappsMethod(String FilePath,String OutFilePath,String osName){
     try
            {
          //  File inFolder=new File("D:\\jakarta-tomcat-5.5.9\\webapps\\");
           // File outFolder=new File("D:\\test.zip");
            System.out.println("Zip Method Calling ....");
            File inFolder=new File(FilePath);
            File outFolder=new File(OutFilePath);

            ZipOutputStream out1 = new ZipOutputStream(new
            BufferedOutputStream(new FileOutputStream(outFolder)));
            BufferedInputStream in = null;
            byte[] data    = new byte[1000];
            String files[] = inFolder.list();
            System.out.println("file list = " + files);
            for (int i=0; i 0)
            {
                dos.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }
            dos.writeBytes(lineEnd);
            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
            fileInputStream.close();
            dos.flush();
            dos.close();
            System.out.println("It's Connected");
          //  System.out.println("It's Completed1");
            InputStream is = m_oHttpURLConnection.getInputStream ( ) ;
           // System.out.println("It's Completed1");
            if ( is == null )
            {
                throw new Exception ( "Got a null content object!" ) ;
            }
           // System.out.println("It's Completed1");
            StringBuffer putBackTogether = new StringBuffer ( ) ;
            Reader r = new InputStreamReader ( is, "UTF-8" ) ;
            char [ ] cb = new char [ 2048 ] ;
            int amtRead = r.read ( cb ) ;
            while ( amtRead > 0 )
            {
                putBackTogether.append ( cb, 0, amtRead ) ;
                amtRead = r.read ( cb ) ;
            }

            String pageSource = putBackTogether.toString ( ) ;
            System.out.println("It's Completed");
           // System.out.println(pageSource);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }


         public void DownloadWebappsMethod(List items,File path){

            System.out.println("Download Webapps Method Calling ....");

          //if (isMultipart)
       //   {
          /*  FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
*/
            try {
               //List items = upload.parseRequest(request);
                Iterator iterator = items.iterator();
                while (iterator.hasNext()) {
                    FileItem item = (FileItem) iterator.next();

                    if (!item.isFormField()) {
                        String fileName = item.getName();

                        if (!path.exists()) {
                            boolean status = path.mkdirs();
                        }

                        File uploadedFile = new File(path + "/" + fileName);
                        System.out.println(uploadedFile.getAbsolutePath());
                        item.write(uploadedFile);
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
       // }

     }

      public void UnZipWebappsMethod(File FilePath,File pathUnzip,String osName){
        final  int BUFFER = 2048;

        try
          {
            System.out.println("UnZip Method Calling... " );
            // String fileName = "D:\\test.zip";
             String fileName = FilePath.toString();
             String filePathChk = pathUnzip.toString();
             BufferedOutputStream dest = null;
             FileInputStream fis = new FileInputStream(fileName);
             ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
             ZipEntry entry;
             while((entry = zis.getNextEntry()) != null)
             {
                System.out.println("Extracting...: " +entry);
                int count;
                byte data[] = new byte[BUFFER];
                // write the files to the disk
               // FileOutputStream fos = new FileOutputStream("D:\\test\\"+entry.getName());
                FileOutputStream fos = null;
                if(osName.startsWith("Win")){
                    fos = new FileOutputStream(filePathChk+"\\"+entry.getName());
                }else{
                    fos = new FileOutputStream(filePathChk+"//"+entry.getName());
                }

                
                dest = new BufferedOutputStream(fos, BUFFER);
                while ((count = zis.read(data, 0, BUFFER)) != -1)
                {
                   dest.write(data, 0, count);
                }
                dest.flush();
                dest.close();
             }
             zis.close();
          } catch(Exception e) {
             e.printStackTrace();
          }
      }


}

UploadWebapps.java


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.File;


public class UploadWebapps extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP GET and POST methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        try {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            String urlPath =   request.getParameter("Url");
            int portPath =   Integer.parseInt(request.getParameter("Port"));

            String osName = System.getProperty("os.name");
            String FilePath     = "";
            String OutFilePath  = "";

            String currentdir = System.getProperty("user.dir");
            File dir = new File(currentdir);

            String directory = dir+"";
            String  saveFile    =   directory.replaceAll("bin","webapps");

            if(osName.startsWith("Win")){
                FilePath =   saveFile;//request.getParameter("filePath");
                OutFilePath  ="D:\\test\\test.zip";

            }else{
                FilePath =   saveFile;
                OutFilePath  ="//root//test.zip";
            }

            UploadAllMethod uClass  =  new UploadAllMethod();

            System.out.println("FilePath : "+FilePath);
            System.out.println("OutFilePath : "+OutFilePath);
            System.out.println("IpAddress : "+urlPath);
            System.out.println("Port : "+portPath);

            uClass.ZipWebappsMethod(FilePath,OutFilePath,osName);
            out.println("

ZipWebappsMethod Completed

"); uClass.UploadWebappsMethod(OutFilePath,urlPath,portPath); out.println("

Upload Webapps Method Completed

"); } finally { // out.close(); } } }

ZipUnzip servlet

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ZipUnzip extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP GET and POST methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {


         


    final  int BUFFER = 2048;

    try
      {
         String fileName = "D:\\test.zip";
         BufferedOutputStream dest = null;
         FileInputStream fis = new FileInputStream(fileName);
         ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
         ZipEntry entry;
         while((entry = zis.getNextEntry()) != null)
         {
            System.out.println("Extracting: " +entry);
            int count;
            byte data[] = new byte[BUFFER];
            // write the files to the disk
            FileOutputStream fos = new FileOutputStream("D:\\test\\"+entry.getName());
            dest = new BufferedOutputStream(fos, BUFFER);
            while ((count = zis.read(data, 0, BUFFER)) != -1)
            {
               dest.write(data, 0, count);
            }
            dest.flush();
            dest.close();
         }
         zis.close();
      } catch(Exception e) {
         e.printStackTrace();
      }


          
        } finally { 
            out.close();
        }
    } 

    // 
    /** 
     * Handles the HTTP GET method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP POST method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    public String getServletInfo() {
        return "Short description";
    }// 

}

No comments:

Post a Comment