2011-06-03 26 views
7

Yanıtı here'dan kullanmayı denedim, ancak çalışmadı.ASP.NET MVC3: Görüntü denetleyiciden yükleme

ben diyor bir hata alıyorum sayfasını açmak
public ActionResult ShowImage() 
{ 
    using (FileStream stream = new FileStream(Path.Combine(Server.MapPath("/App_Data/UserUpload/asd.png")), FileMode.Open)) 
    { 
     FileStreamResult result = new FileStreamResult(stream, "image/png"); 
     result.FileDownloadName = "asd.png"; 
     return result; 
    } 

} 

: Aşağıdaki kod var "Kapalı bir dosya erişilemiyor". Bazıları hata yaptım, ancak yalnızca yükleme ile ilgili bu hatayı buldum. Buradaki sorun nedir?

public ActionResult ShowImage() 
{ 
    var file = Server.MapPath("~/App_Data/UserUpload/asd.png"); 
    return File(file, "image/png", Path.GetFileName(file)); 
} 

veya ayrı bir dosya adı isterseniz:

cevap

9

böyle deneyin Bu çalıştı

public ActionResult ShowImage() 
{ 
    var path = Server.MapPath("~/App_Data/UserUpload"); 
    var file = "asd.png"; 
    var fullPath = Path.Combine(path, file); 
    return File(fullPath, "image/png", file); 
} 
+0

, teşekkür ederim! Hala ilgimi çekiyor, neden sunmuş olduğum kod çalışmadı? – Esa

+1

@Esa, sunduğunuz kodda FileStream'i bir 'using' deyimine sardınız ve bu akımın denetleyici eylemi geri gelmeden önce atılacağı anlamına gelir. Ancak eylem sonucu MVC boru hattında çok daha sonra yürütülecek ve Stream'i kullanmaya başladığında "FileStreamResult" dosyasına geçtiniz ve kapatılacak. –

+0

Daha fazla bilgi edinmek için her zaman eğlenceli, teşekkürler. – Esa