ASP.NET MVC3:通过控制器加载图像

时间:2011-06-03 09:47:54

标签: image asp.net-mvc-3 controller

我尝试使用here的答案,但它没有用。我有以下代码:

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

}

当我打开页面时,我收到一条错误消息:"无法访问已关闭的文件。"。我做了一些关于错误的谷歌搜索,但我只发现了与上传相关的错误。是什么导致这个问题?

1 个答案:

答案 0 :(得分:9)

试试这样:

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

或者如果你想要一个单独的文件名:

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