2012-04-18 14 views
2

既存の質問を見ましたが、完全一致は見つかりませんでした。多分私は何か明白なものを見逃しています。もしそうなら、適切な場所で私を指示してください。ここに私の問題があります:ExtJsフロントエンドからのファイルアップロードを受信するWCFサービス契約

私はExtJsのフロントと、バイナリデータをWCFのバックエンドにアップロードする必要があるアプリケーションがあります。

namespace MyApp 
{ 
    [ServiceContract] 
    public interface ITransferService 
    { 
     [OperationContract] 
     [WebInvoke(UriTemplate = "UploadImage", Method = "POST")] 
     void SaveImage(Stream buffer); 
    } 

} 

:私は、次のコードを持っているフロントエンドで、私は、次の契約を持っているバックエンドで

// Create a dummy form in the controller after user selected a file 
var form = Ext.create('Ext.form.Panel', { 
    items: [ my_file_field ] 
}); 

form.getForm().submit({ 
    method: 'POST', 
    url: 'myservice.url', 
    ... 
}); 

を(私は、ユーザーがファイルを選択できるようにExt.form.field.Fileコントロールを使用します)これは、1つの小さなことを除いて「罰金の作品:ストリームにSaveImage()の内側に、私はバイナリ選択したファイルの利用者からのデータだけでなく、ヘッダの束とエンコードされたフィールドだけでなく、取得する:iがm午前何

------WebKitFormBoundary26wAkvwGTnAMELFM 
Content-Disposition: form-data; name="ext-gen1654"; filename="photo.png" 
Content-Type: application/octet-stream 
..... binary data goes here .... 
------WebKitFormBoundary26wAkvwGTnAMELFM-- 

を発行?クリーンなバイナリデータを取得するために、サービスの契約を変更するにはどうすればよいですか?

答えて

3

私はこの記事を見つけました:http://antscode.blogspot.com/2009/11/parsing-multipart-form-data-in-wcf.html

誰もがより簡単な解決策を知っていますか?提案された解析ロジックは複雑ではありませんが、私はこれが共通の課題であり、簡単なやり方が必要であるという印象を受けました。私はMSFTがWCF標準のWebページPOSTを理解できないとは信じられません。

1

アクセスした現在の要求に添付されたファイルがファイルキーまたはインデックスに返されます。お役に立てれば!

Stream file = HttpContext.Current.Request.Files.Get(<file_key>).InputStream; 
+1

同じようにエンコードされた他のパラメータはどうですか? – sha

+0

@shaこれを行うだけです: 'HttpContext.Current.Request.Form.Get(" myParam ")'。あるいは、クエリ文字列 'HttpContext.Current.Request.QueryString.Get(" myParam ")'からそれらを読み取ることもできます。 –

関連する問題