私は、ファイルIDのリストを渡してそれらのファイルのサムネイル画像を返す、ASP.NET MVC 4 Web Apiコントローラメソッドを持っています。1つのWebApiメソッドから複数のバイナリファイルを提供する最良の方法は何ですか?
ので、クライアントは、数値ID(例えば、10、303、29)のリストを渡すかもしれない、との方法は、サムネイル画像が少しこのようになります一覧を返します。その
class ThumbnailImage
{
public int Id { get; set; }
// Some other stuff
public byte[] RawData { get; set; }
}
理由を発信者はIDのリストを渡すのではなく、アイテムごとに1回の呼び出しで分かりやすくする必要があります。ダウンロードするアイテムは数十または数百になる可能性があります。個別にダウンロードするために必要なすべてのHTTPトラフィックを回避しようとしています。
現在、私はRestSharpとJSON.NETを使用していますので、ThumbnailImageオブジェクトがJSONとして渡されています。コーディングのシンプルさという点では問題ありませんが、JSONはバイナリデータを効率的に表現する方法ではありません。
私は、生のバイトをオクテットストリームとして返すべきだと考えています...しかし、私はそれを簡単に行うことができますが、私はそれを行う最良の方法は不明です複数の画像の場合、特に、IDやその他の情報を各ファイルに返す必要がある場合には、 (結果は必ずしも指定された順序で返されるわけではなく、いくつかのファイルが欠落している可能性があるため、IDは必須です。
Iは、単に項目ごとに、私は、画像データ自体に続く画像データの長続いID(適当に符号化された)、、、およびを書き込むように続いて、応答ストリームに断片的にすべてを書くことができます次の項目についても同じことによって、など
それはエンコーディングに関する仮定作り、排出されるまで、発信者は、単にストリームから読み続けるだろう(と長さを!)IDの、など
私はそれがうまくいくと思いますが、それはちょっとしたようです - 良い方法がありますか?
如何でしょうかクライアントが画像を使用する、画像をWebページに表示する、アーカイブとしてダウンロードするなど何か他のもの – EBarr
レスポンスをMultipartContentとして送信できるかどうかを知りたい場合は、内部コンテンツをStreamContentにして、 。 –
@EBarr:クライアントアプリケーションも作成していますので、閉じた環境です。WinFormsアプリケーション内で画像を表示します(検索結果のサムネイルとして) –