2011-12-28 8 views
3

私はWCF Data Serviceを使用して、WCFが既に提供している他のデータ型とともにmp3ファイルを返すことを望みます。 これは可能ですか?WCFデータサービスを使用してファイルを返すことはできますか?

[12/29]私はSQLでmp3バイナリデータ(〜10秒ごと)を持っています。私はそれでhtmlオーディオタグを使用したいと思います: <audio src="/server/svc/id" type="audio/mpeg" /> Javascriptでidが変更されます。 [12/30]

...これは、WCFは、バイナリ配列を返すと連携する方法がわからないことは、CSDLでMIMEタイプを設定した後....動作します。

+0

mp3がすでにバイナリフィールドにエンコードされている場合、それは動作しませんなぜ...私は表示されません。 – Nate

+1

あなたはWCFストリーミングメッセージ転送に見てみたいことがあります.. http://msdn.microsoft.com/en-us/library/ms731913.aspx –

答えて

3

確かに、あなたは3つの方法でこれを行うことができます:

  1. 、1つを持っているだろう、既存のエンティティ(この場合の各オーディオファイルを表す通常、サービスホストエンティティのバイナリプロパティとしてそれを含めますそのプロパティの実際のオーディオmp3)です。コードでは、これはバイト型のプロパティを宣言するだけです(そして、それを埋めてください)。これはセットアップが本当に簡単です。欠点は、そのようなエンティティを取得すると、mp3全体がダウンロードされ、BASE64でエンコードされたテキストとして転送されることです。上記のように、代わりにバイナリプロパティにmp3を格納する

  2. 同様のセットアップを使用して、エンティティメディアリソースのエントリを作成し、あなたはそれがデフォルトのストリーム値があることを確認してください。これについては、このブログの記事「http://blogs.msdn.com/b/astoriateam/archive/2010/08/04/data-services-streaming-provider-series-implementing-a-streaming-provider-part-1.aspx」および「http://blogs.msdn.com/b/astoriateam/archive/2010/09/08/data-services-streaming-provider-series-part-2-accessing-a-media-resource-stream-from-the-client.aspx」で詳しく説明されています。最新のCTP WCF DSで

  3. は、ストリームのプロパティをサポートしています。上記の#2と似ていますが、1つのエンティティに複数のストリームをそれぞれの名前でアクセスすることができます。あなたはURLを使用することができ、オーディオストリームの生の値にアクセスするには

(あなたはストリームを公開するために使用する方法によって異なります):

  1. urltotheentity/MyBinaryProperty/$値

  2. urltotheentity/$値

  3. urltotheentity/StreamPropertyName/$値

ストリームのデフォルトのMIMEタイプはapplication/octet-streamになります。プロパティー(リフレクションプロバイダ)の属性MimeTypeまたは属性をそのプロパティのCSDLに追加する必要があることに注意してください(EFプロバイダ)。 #2と#3では、ストリームプロバイダへの呼び出しによってMIMEタイプが判別されます。

+0

感謝しかし、私は私の質問ビットを明確にする必要がある - –

+0

私はどのように追加しました上記の私の答えで値にアクセスしてください。 –

+0

ありがとうございました。 –

関連する問題