2011-03-17 6 views
0

MultipartPostData 클래스를 사용하여 원격 서버에 이미지를 보내려고하면이 문제가 발생합니다.Blackberry jde : MultipartPostData를 사용하여 서버에 이미지를 업로드하는 방법

나는 다음과 같은 코드로 내과 PostData를 구축 :

PostData body = new MultipartPostData(MultipartPostData.DEFAULT_CHARSET, false); 
body.append("deviceID", ""+DeviceInfo.getDeviceId()); 
body.append("synchro", "true"); 
body.append("shoot_lat", ""+latitude); 
body.append("shoot_long", ""+longitude); 
body.append("shoot_place", ""+city); 
body.append("shoot_time", String.valueOf(time)); 
body.append("ref_data", "filename=\"photo.jpg\""); 
//image is a byte[] 
body.setData(image); 

뭔가 내가 접수 및 분석 데이터를 인쇄하는 경우 서버가 (이 몸을 얻을 수 없기 때문에 이미지를 설정하는 방법으로 잘못된 생각 요청의 본문에있는 서버, 빈 문자열을 얻을).

누구나 이미지 전송 요청을 작성할 수 있습니까?

고마워요.

답변

2

좋아, 결국 나는 혼자 답을 발견했다.

private static final String BOUNDARY = "---------------------------14737809831466499882746641449"; 

public void createHttpMultipartRequest(String url, Hashtable params, String fileField, String fileName, String fileType, byte[] fileBytes) throws Exception 
{ 
    this.url = url; 
    String boundary = getBoundaryString(); 
    String boundaryMessage = getBoundaryMessage(boundary, params, fileField, fileName, fileType); 

    String endBoundary = "\r\n--" + boundary + "--\r\n"; 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    bos.write(boundaryMessage.getBytes()); 

    if(fileField != null) 
    { 
     bos.write(fileBytes); 
    } 
    bos.write(endBoundary.getBytes()); 

    this.postBytes = bos.toByteArray(); 
    bos.close(); 
} 

String getBoundaryString() 
{ 
    return BOUNDARY; 
} 

String getBoundaryMessage(String boundary, Hashtable params, String fileField, String fileName, String fileType) 
{ 
    StringBuffer res = new StringBuffer("--").append(boundary).append("\r\n"); 
    String intermediateBoundary = "\r\n--" + boundary + "\r\n"; 

    Enumeration keys = params.keys(); 
    while(keys.hasMoreElements()) 
    { 
     String key = (String)keys.nextElement(); 
     String value = (String)params.get(key); 
     res.append("Content-Disposition: form-data; name=\"").append(key).append("\"\r\n")  
      .append("\r\n").append(value); 

     if(keys.hasMoreElements()) 
     { 
      res.append(intermediateBoundary); 
     } 
    } 

    if(fileField != null) 
    { 
     res.append(intermediateBoundary); 
     res.append("Content-Disposition: form-data; name=\"").append(fileField).append("\"; filename=\"").append(fileName).append("\"\r\n") 
      .append("Content-Type: ").append(fileType).append("\r\n\r\n"); 
    } 
    return res.toString(); 
} 

Hashtable에는 양식의 모든 매개 변수가 들어 있습니다. fileBytes에는 보낼 데이터가 들어 있습니다.

+0

어떤 사람이 나에게 알릴 수 있습니다 .. 어떻게하면이 방법을 제대로 사용할 수 있습니까? 제발 미디어 업로드에 갇혀 있습니다 .. 도와주세요. –

관련 문제