2011-10-21 2 views
1

Android 클라이언트를 사용하여 파일을 wcf 서비스에 업로드하고 있습니다. 업로드가 작동하지만 파일의 이름과 다른 정수 매개 변수를 요청에 넣으려고합니다.WCF 파일 메타 데이터가 포함 된 webHttpBinding

어떻게하면됩니까? afaik, 내가 SOAP로 메시지를 패키징하지 않기 때문에 나는 메시지 계약을 사용할 수 없다. 대안이 있습니까?

나는 안드로이드 측에이 코드를 사용 :

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     bm.compress(CompressFormat.JPEG, 75, bos); 
     byte[] data = bos.toByteArray(); 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost postRequest = new HttpPost(serviceAddress + 
       "/Upload/"); 
     ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg"); 

     MultipartEntity reqEntity = new MultipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE); 
     reqEntity.addPart("step", new StringBody("1")); 
     reqEntity.addPart("fileName", new StringBody("elad.jpg")); 
     reqEntity.addPart("file", bab); 
     postRequest.setEntity(reqEntity); 
     HttpResponse response = httpClient.execute(postRequest); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       response.getEntity().getContent(), "UTF-8")); 
     String sResponse; 
     StringBuilder s = new StringBuilder(); 

     while ((sResponse = reader.readLine()) != null) { 
      s = s.append(sResponse); 

과 (단지 teesting 용) WCF 측이 코드 :

[WebInvoke(UriTemplate = "", Method = "POST", BodyStyle= WebMessageBodyStyle.Bare)] 
    public void Upload(Stream fileStream) 
    { 
     FileStream targetStream = null; 
     string uploadFolder = @"C:\inetpub\wwwroot\Upload\test.jpg"; 
     using (targetStream = new FileStream(uploadFolder, FileMode.Create, 
      FileAccess.Write, FileShare.None)) 
     { 
      const int bufferLen = 65000; 
      byte[] buffer = new byte[bufferLen]; 
      int count = 0; 
      while ((count = fileStream.Read(buffer, 0, bufferLen)) > 0) 
      { 
       targetStream.Write(buffer, 0, count); 
      } 
      targetStream.Close(); 
      fileStream.Close(); 
     } 
    } 

감사합니다!

답변

관련 문제