我有被傳遞文件ID的列表,並返回這些文件縮略圖的ASP.NET MVC 4網絡API控制方法。從單個WebApi方法提供多個二進制文件的最佳方式是什麼?
因此,客戶端可能會通過在數字ID列表(例如10,303,29),並且該方法返回一個列表,其中一個ThumbnailImage看起來有點像這樣:
class ThumbnailImage
{
public int Id { get; set; }
// Some other stuff
public byte[] RawData { get; set; }
}
的原因,在調用者傳遞的ID,而不是讓每個項目的一個電話應該有希望是顯而易見的名單 - 可能有數十或數百個項目來下載的,我試圖避免將需要單獨下載他們所有的HTTP流量。
目前,我正在使用RestSharp和JSON.NET,因此我的ThumbnailImage對象正在作爲JSON通過導線傳遞。從編碼簡單的角度來看,這很好,但JSON並不是表示二進制數據的有效方式。
所以,我想我應該返回原始字節作爲八位字節流......但是,雖然我可以很容易地做到這一點的單個圖像,我不知道最好的方式來做到這一點對於多個圖像,特別是當我還需要返回每個文件的ID和其他信息時。 (該ID是必需的,因爲結果不一定會以給定順序返回 - 並且某些文件可能會丟失)。
我可以簡單地零碎寫入到一切響應流,使得對於每個項我寫的ID(適當地編碼的),隨後將圖像數據的長度,然後由圖像數據本身,然後接着通過爲下一個項目同樣的事情,等
來電者會然後只需保持從流的ID讀取,直到它被耗盡,使得關於編碼假設(和長度!)等
我認爲這會奏效,但看起來很笨重 - 有沒有更好的方法?
怎麼會客戶是否使用圖像?是在網頁中顯示圖像還是作爲檔案下載?其他? – EBarr
想知道是否可以將響應作爲MultipartContent發送,其中內容可以是StreamContent,其中包含原始字節流。 –
@EBarr:我也在編寫客戶端應用程序,所以它是一個封閉的環境。我將在WinForms應用程序中顯示圖像(作爲搜索結果縮略圖) –