2011-01-17 1 views
1

私はWCFで実装RESTサービスで次のシナリオを実装する必要があります。ファイルをアップロードして処理し、1回のリクエストで結果ファイルをREST WCFサービスに返すにはどうすればよいですか?

  • ユーザーがバイナリファイルとパラメータ
  • のセットサーバは、ファイルを消費し、いくつかの巧妙な作業を行い、A生成を提出バイナリ出力ファイル
  • は、ユーザは、そのバイナリ結果ファイル

とクライアントの観点から単一の操作で行われるものをすべて検索します。

It's pretty easy in a non-REST service。どのようにRESTサービスでそれを行うのですか?どこから始めるのですか?

+0

どのような種類のクライアントアプリケーションがありますか?どのようにサービスを利用していますか? –

+0

@Ladislav Mrnka:私は現時点では何も持っていないので、可能な限り多くのプラットフォーム用のクライアントプログラムを作成できる必要があるため、解決策は可能な限り相互運用可能でなければなりません。 – sharptooth

+0

私は自宅で転記してバイト[]とストリームを返すテストをしました。問題なく動作しました。 –

答えて

0

難しい部分は、XMLHttpRequestオブジェクトがファイルアップロードをサポートしていないことです。 一般的な回避策は、ファイルをアップロードするためにFlashや別のプラグインを使用しています。またはIFrameを使用してファイルをアップロードしてください。

は、サーバ部分は、その難しいことではありません例 http://jquery.malsup.com/form/#file-upload

のために、プロセスを自動化する多くのプラグインがあります。

Requestには、アップロードされたファイルを含むFiles属性が含まれます。ファイルを保存し、応答に必要なものを返します。

上記のプラグインの例を参照して、クライアント側の応答を処理してください。

0

あなたのリンクされた質問は、直接HTTP上のストリーミングに関するものではないので、もちろんRESTサービスでバイト配列を送ることができます。サービス契約の例を次に示します。

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "POST")] 
    byte[] GetByteData(byte[] data); 
} 

データはbase64でエンコードされた文字列として送信されます。送信メッセージの例:

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">QmFzZSA2NCBTdHJlYW0=</base64Binary> 
関連する問題