FileStreamResult отображает пустой документ браузера при рендеринге изображения из потока в MVC3 - PullRequest
0 голосов
/ 04 июля 2011

У меня довольно простое действие в приложении 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 отображает необработанные байты.

Chrome выдает мне сообщение: Ресурс интерпретируется как Документ, но передается с изображением MIME-типа / jpeg

Это говорит о том, что данные потока не отправляются в браузер и фактически получает пустой документ, но IE предлагает обратное.

Кто-нибудь сталкивался с этим раньше или знает, как обойти это?

1 Ответ

3 голосов
/ 04 июля 2011

Вам не нужен поток, если у вас уже есть байтовый массив фотографии:

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");
}

Проблема с вашим кодом заключается в том, что вам нужно сбросить поток памяти в начале, но, как ясказал, что тебе все это не нужно.

...