2011-10-10 1 views
0

j2me를 처음 사용하면서 j2me.It에서 모바일 이미지를 업로드하려고하는데 서버 쪽에서 예외가 표시됩니다.multipart/form-data로 j2me의 서버에 이미지를 업로드하는 방법은 무엇입니까?

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.photo_jsp._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 코드를 사용하여 서버에 이미지를 업로드하고 있습니다.

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: 
    System.out.println(".............Images..122223...Images..."); 
FileItemFactory factory = new DiskFileItemFactory(); 
ServletFileUpload upload = new ServletFileUpload(factory); 
System.out.println(".............Images...11111..test..."+upload); 
boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
    System.out.println(".............Images...11111..test..."+isMultipart); 

if(isMultipart) 
{ 
     System.out.println(".............Images...11111..Images..Images...."); 
     List items = upload.parseRequest(request); 
     System.out.println(".............Images.33333....Images..Images...."); 

      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; 
    }  
        } 

예외를 해결하고 이미지를 서버에 보내는 방법을 제안 해주세요.

미리 감사드립니다. .

답변

0

미안 내가 잘못이 무엇인지 확인하기 위해 코드를 통해 확인하는 시간이 없어,하지만 난 그것을 작동하지 않는, 내가 그 코드를 사용, 이전에이 solution by Jason Woods

+0

안녕 peter_budo을 사용했다. 서버에 이미지를 업로드 할 때 업로드하지 않습니다. Jason Woods 코드가 내 측면에서 작동하지 않으므로 작동합니까? – Teja

+0

작동하지 않는 것은 매우 광범위합니다. 더 구체적이지 않은 것은 작동하지 않을 수 있습니까? –

+0

여러 부분 양식 데이터를 사용하여 서버에 이미지를 업로드하는 데 동일한 코드를 사용했습니다. 서버 측에서 이미지를 업로드하기 위해 OutputStream을 사용하여 목록 항목 근처에 빈 항목을 표시합니다. = upload.parseRequest (request); – Teja