How to upload image to server in j2me by multipart/form-data?

Hi,

I need upload data to java server from j2me 1.Two text messages and 3 capture images to server. 2.As java server is already designed, as we want to send data in multi part form data. 3.As write code to upload text and image.As it is working fine while we send data to server from emulator.But by uploading same code from mobile it is showing exception.I am using mobile to upload in Samsung S5620 Monte. 4.I getting exception

org.apache.commons.fileupload.FileUploadException: Processing of ``multipart/form- data request failed. Stream ended unexpectedly at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadB ase.java:384) at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest( ServletFileUpload.java:116) at org.apache.jsp.photojsp.jspService(photo_jsp.java:119) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper .java:384) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3 20) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:216) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol $Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run (JIoEndpoint.java:445) at java.lang.Thread.run(Unknown Source)

From J2me I am using code to upload image to server is. HttpConnection conn = null; OutputStream os = null; // InputStream is = null;

try
{
    System.out.println("url:" + serverurl);
    conn = (HttpConnection)Connector.open(serverurl);
    conn.setRequestMethod(HttpConnection.POST);

  //  String postData = "";

    InputStream imgIs = getClass().getResourceAsStream(FILE);
    byte []imgData = new byte[imgIs.available()];
    imgIs.read(imgData);

    conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---------------------------4664151417711");

    os = conn.openOutputStream(); 
   // os.write(message1.getBytes()); 
 // For First Image uploading

 String message1 = "";
  message1 += "-----------------------------4664151417711" + CrLf;
 message1 += "Content-Disposition: form-data; name=\"photo\"; 
                filename=\"" + FILE +    "\"" + CrLf; 
 message1 += "Content-Type: image/jpeg" + CrLf; message1 += CrLf;

      os.write(message1.getBytes());


     // SEND THE IMAGE 
     int index = 0; 
     int size = 1024; 
     do{ 
         System.out.println("write:" + index); 
         if((index+size)>imgData.length){ 
             size = imgData.length - index;  
         } 
         os.write(imgData, index, size); 
         index+=size; 
         progress(imgData.length, index); // update the progress bar. 

     }while(index<imgData.length); 

    System.out.println("DONE");

}
catch(Exception e)
{
    e.printStackTrace();
}finally
{
    System.out.println("Close connection");
    try
    {
        //os.close();
    }
    catch(Exception e){}
    try
    {
       // is.close();
    }
    catch(Exception e){}
    try
    {
      //  conn.close();            
    }
    catch(Exception e){}
}

on serside we use the code:

FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory);

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if(isMultipart) {

   **List items = upload.parseRequest(request);//I am getting exception here**


      Iterator iterator = items.iterator();
      while(iterator.hasNext())
      {
             String fieldName = "";
              String fieldValue=""; 
              String fileName = ""; 
               FileItem fileItem=(FileItem)iterator.next();
               System.out.println(fileItem.isFormField());
if (fileItem.isFormField())
{
     fieldName = fileItem.getFieldName();
     fieldValue = fileItem.getString("UTF-8").trim();

     if(fieldName.equals("photo"))
     {
         if(fieldValue!=null && fieldValue!="")
         {
              photo = fieldValue;
              System.out.println(photo);
         }
     }
}           
else

 try
 {
     if(fileItem != null)
     {
         fileName = applicationNumber+"_"+fileItem.getName();
         fieldName = fileItem.getFieldName();
        System.out.println("applicationNumber="+fileName);
     }
     if(fieldName.equals("photo"))  
    {       
       String x=fileName;
        if(x.indexOf("/")!=-1)
        {
             uploadStr = x.substring(0,x.lastIndexOf("/") );
             UploadFile = x.substring(x.lastIndexOf("/")+1,x.length() );
        }
         long sizeInBytes = fileItem.getSize();
         String applicationURL = "C:/Program Files/
           Apache Software Foundation/Tomcat 6.0/webapps/apply_smart/applications";
 StringTokenizer stringTokenizer = new StringTokenizer(UploadFile,"\\");
            int  count=stringTokenizer.countTokens();
             for(int i=1;i<=count;i++)
             {
                      String token=stringTokenizer.nextToken();
                       if(i==count)
                      {
                           audioFileName=token;
                      }
               }
              applicationURL = applicationURL;
              System.out.println("Path="+applicationURL);
              String[] filePath = fileName.split("/");
uploadedFile = new File(applicationURL+"/"+filePath[filePath.length - 1]);
                long size=uploadedFile.length();
               if(size>=11264)
                {
                   }
                                 try
                                 {
                  fileItem.write(uploadedFile);
                    path = applicationURL.replaceAll
("C:/ProgramFiles/ApacheSoftwareFoundation /Tomcat 6.0/ webapps/apply_smart/", "");
                 path= path + "/"+ filePath[filePath.length - 1];
                  System.out.println("path::::::"+path);                
            }
            catch (java.lang.Exception e)
            {
                out.println(e);
             }
                         }  
      }//else
}
catch(Exception exe)
{
 out.println(exe);
 break;
}       
                }

Please suggest me how to solve the exception and send image to server.

Thanks in advance. -Teja.

View Answers

January 24, 2012 at 6:24 PM

Hi can anyone help me...am also struggling with same exception..









Related Tutorials/Questions & Answers:
Advertisements