2011-10-21 20 views
1

私はAndroidクライアントを使用してファイルをwcfサービスにアップロードしています。 アップロードが正常に動作しましたが、今度はファイルの名前と別の整数パラメータをリクエストに追加します。WCF webHttpBinding with file metadata

どうすればいいですか?アフリカ、私は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側のこのコード:

私は、Android側でこのコードを使用

[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(); 
     } 
    } 

ありがとうございました!

答えて

関連する問題