2011-07-04 22 views
0

從流渲染圖像時,顯示空瀏覽器的文件我在MVC3應用程序相當簡單的行動應該渲染圖像...FileStreamResult在MVC3

public FileStreamResult Photo(int id) 
    { 
     //get the raw bytes for the photo 
     var qry = from p in db.Photos 
        where p.PhotoID == id 
        select p.PhotoData; 
     var data = qry.FirstOrDefault(); 

     var mem = new MemoryStream(data); 
     var fs = new FileStreamResult(mem, "image/jpeg"); 
     return fs; 
    } 

當我運行此我得到了一個空白文檔Chrome,Firefox在實際文檔區域顯示URL,IE呈現原始字節。

鉻給我一個消息:資源解釋爲文獻但與MIME類型的圖像/ JPEG

這表明,我認爲該流數據沒有被髮送到瀏覽器傳送並且它實際上接收一個空文件,但IE表明相反。

之前有人遇到過這種情況,或者知道如何避開它?

回答

3

你不需要流,如果你已經有照片的字節數組:

public ActionResult Photo(int id) 
{ 
    var data = db.Photos.FirstOrDefault(p => p.PhotoID == id); 
    if (data == null) 
    { 
     return HttpNotFound(); 
    } 
    return File(data.PhotoData, "image/jpeg"); 
} 

與您的代碼的問題是,您需要將內存流在開始時復位但正如我所說你不需要這一切。