I am trying to create an application that will display images that are stored locally on the webserver. Here is what I have in my view, note that \"entry\" are absolute addresse
You cannot directly serve images outside of your ASP.NET MVC 3 application to the client. That would be a huge security vulnerability if the client could access arbitrary files on your server.
You will need to write a controller action that will return them and then point your src
property of your tags to this controller action.
public class ImagesController: Controller
{
public ActionResult SomeImage()
{
return File(@"C:\Images\foo.jpg", "image/jpeg");
}
}
and inside your view:
You could also pass the image name as parameter to the controller action:
public class ImagesController: Controller
{
public ActionResult SomeImage(string imageName)
{
var root = @"C:\Images\";
var path = Path.Combine(root, imageName);
path = Path.GetFullPath(path);
if (!path.StartsWith(root))
{
// Ensure that we are serving file only inside the root folder
// and block requests outside like "../web.config"
throw new HttpException(403, "Forbidden");
}
return File(path, "image/jpeg");
}
}
and in your view: