2012-12-11 2 views
3

이미 클라이언트 측에서 GWT를 사용하여 POST 요청과 함께 XML 파일을 문자열 + 그림으로 보내는 많은 방법을 시도했습니다. 문자열을 성공적으로 보낼 수는 있지만 RequestBuilder를 사용하여 파일 (그림)을 보내는 방법을 모르겠습니다. 이제 문자열 만 보낼 수 있습니다.GWT 클라이언트 : 다중 파트/양식 데이터 게시 요청을 사용하여 파일 보내기

GWT 클라이언트 (RequestBuilder)를 사용하여 multipart/form-data POST 요청으로 파일을 보내는 방법을 아는 사람이 있습니까?

피씨 : 파일을 업로드하고 싶지 않기 때문에 업 로더 나 비슷한 것을 필요로하지 않습니다. Phonegap을 사용하여 모바일 앱을 개발하고 POST 요청에 따라 서버 (타사 서비스)로 보내야하는 사진을 작성 중입니다.

미리 감사드립니다. 여기

일부 코드 :

public void sendPost() throws RequestException { 
     String boundary = createBoundary(); 
     String xml = "<note> <to>Müller</to> <from>Jani</from> <heading>Erinnerung</heading> <body>Ich wohne in der Leipzigerstraße</body> </note>"; 
     String requestData = getRequestData(boundary, xml); 



    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "http://localhost:8080/xxx/yyy"); 
    builder.setHeader("Content-Type", "multipart/form-data; charset=UTF-8; boundary=" + boundary); 
    builder.setHeader("Content-Length", Long.toString(requestData.length())); 
    try { 
     builder.sendRequest(requestData, new RequestCallback() { 
     public void onResponseReceived(Request request, Response response) { 

     } 
     public void onError(Request request, Throwable exception) { 
      exception.printStackTrace(); 
     } 
     }); 
    } catch (RequestException e) { 
     e.printStackTrace(); 
    } 

} 

private String getRequestData(String boundary, String xml) { 
    String s = ""; 

    s += "--" + boundary + "\r\n"; 
    s += getRequestParameter("xml", xml + ""); 
    s += "--" + boundary + "--\r\n"; // end 
    return s; 
} 

private String getRequestParameter(String key, String value) { 
    return "Content-Disposition: form-data; name=\"" + key + "\"\r\n\r\n" 
      + value + "\r\n"; 
} 
private String createBoundary() { 
    return "----GoneVerticalBoundary" + getRandomStr() + getRandomStr(); 
} 

private String getRandomStr() { 
    return Long.toString(random.nextLong(), 36); //random -> DEFINED IN THE CLASS BODY 
} 
+0

(클래스 Base64Util 참조) 그 JS에서, 다음 _porting_을에 GWT는 간단해야합니다. 그러나 GWT는 기적을 할 수 없습니다. –

+0

+1 질문입니다. 유스 케이스를 보지 마라. 또한 전화 갭으로 재표시됩니다. – SSR

답변

1

gwt + phonegap을 사용하는 경우 gwt-phonegap을 사용해야합니다. 맞습니까?

내 앱에서 내가하는 일은 데스크톱 버전에 gwtupload를 사용하고 모바일에서 파일 전송을 phonegap하는 것입니다. 두 경우 모두 서버 쪽에서 gwtupload 서블릿을 사용합니다.

FileUploadOptions options = new FileUploadOptions(); 
    options.setFileKey("file"); 
    options.setFileName("my_file.txt"); 
    options.setMimeType("text/plain"); 

    phonegap.getFile().createFileTransfer().upload(
    "file:///my_path/my_file.txt", 
    "http://my-gwtupload-servlet/servlet.gupld", 
    options, 
    new FileUploadCallback() { 
    @Override 
    public void onSuccess(FileUploadResult result) { 
     if (result.getResponseCode() == 200) { 
     } else { 
     } 
    } 
    @Override 
    public void onFailure(FileTransferError error) { 
     Window.alert("Error sending the file, error-code: " + error.getCode()); 
    } 
    }); 

내가 phonegap.env를 사용하여 적절한 구현을 선택하는 바인딩 지연된 사용 : 모든 사람들을 위해

<replace-with class="...UploadFilePhoneGap"> 
    <when-type-is class="....UploadFile" /> 
    <when-property-is name="phonegap.env" value="yes" /> 
</replace-with> 
1

당신이 순수 GWT 솔루션을 찾고 있다면 당신은 다음 gwtupload을 시도 할 수 있습니다 타사 오픈 소스 항아리를 사용 괜찮다면 다음 FileUpload

작업해야

로케일 문제의 경우 UTF-8 및 GWT 로캘 쿠키와 로캘 설정을 사용하고 있는지 확인하십시오.

+0

이전에 이미 gwtupload를 사용했지만 지금은 phonegap이있는 휴대 전화 용으로 개발 중이므로 사진 (파일)을 업로드 할 수 없습니다. 어쨌든 고마워! – jcdmb

+0

phonegap, gwtupload 및 이미 시도한 다른 방법에 대한 질문을 업데이트 할 수 있습니까? – SSR

0

파일과 사진을 관리하고 싶어

이것은 GWT-폰갭를 사용하여 내 코드입니다 클라이언트 측에서는 서버에 보내기 전에 Manolo가 추천 한대로 lib-gwt-file을 제안합니다. 당신은 당신이 할 거라고 어떻게 아이디어가있는 경우 폰갭, I는 서버 측에서 Base64로, 및 디코딩을 사용하여 사진을 enconding 제안과 함께 일하는 사람들을 위해

관련 문제