Zwracanie pliku w ASP.NET MVC 3

0

Problem dotyczy FileContentResult i FileStreamResult. W teorii wiem do czego który służy, a jednak tylko FileContentResult udaje mi się użyć poprawnie.

Akacja GetImage jest pewnego kotrolera zwraca obrazek jpeg. Zakładam, że currentImage istnieje i nie jest równy null.

Działająca wersja:

public ActionResult GetImage()
{
    FileContentResult result;
    using (var ms = new MemoryStream())
    {
        currentImage.Save(ms, ImageFormat.Jpeg);
        result = File(ms.GetBuffer(), "image/jpeg");
    }
    return result;
} 

Niedziałająca wersja:

public ActionResult GetImage()
{
    FileStreamResult result;
    using(var ms = new MemoryStream())
    {
        currentImage.Save(ms, ImageFormat.Jpeg);
        result = new FileStreamResult(ms, "image/jpg");
    };

    return result;

Chciałbym dowiedzieć się dlaczego drugi kod nie działa(?).

0
public ActionResult GetImage()
{
    FileStreamResult result;
    using(var ms = new MemoryStream())
    {
        currentImage.Save(ms, ImageFormat.Jpeg);
        ms.Seek(0, SeekOrigin.Begin);
        result = new FileStreamResult(ms, "image/jpg");
    };

    return result;
0

@j_s_r_n: Niestety to nie to. Dalej nie działa.

0

Wywal using, zwracasz zamknięty strumień.

MemoryStream ms = new MemoryStream();
currentImage.Save(ms, ImageFormat.Jpeg);
ms.Seek(0, SeekOrigin.Begin);
result = new FileStreamResult(ms, "image/jpg");
1

No tak <facepalm>

Dzięki za pomoc w rozwiązaniu problemu!

1 użytkowników online, w tym zalogowanych: 0, gości: 1