HOE TO RETURN IMAGE IN ASP.NET MVC?

marcel ethan

Total Post:105

Points:735
Posted by  marcel ethan
 945  View(s)
Ratings:
Rate this:

Can I create a Controller that simply returns an image asset?

I would like to route this logic through a controller, whenever a url such as the following is requested:

www.mywebsite.com/resource/image/topbanner

The controller will look up topbanner.png and send that image directly back to the client.

I've seen examples of this where you have to create a View - I don't want to use a View. I want to do it all with just the Controller.

Is this possible?

  1. Samuel Fernandes

    Post:159

    Points:1117
    Re: Hoe to return image in asp.net mvc?

    Use the base controllers File method.

    public ActionResult Image(string id)

    {

        var dir = Server.MapPath("/Images");

        var path = Path.Combine(dir, id + ".jpg");

        return base.File(path, "image/jpeg");

    }

    As a note, this seems to be fairly efficient. I did a test where I requested the image through the controller (http://localhost/MyController/Image/MyImage) and through the direct url (http://localhost/Images/MyImage.jpg) and the results were:

    • MVC: 7.6 milliseconds per photo
    • Direct: 6.7 milliseconds per photo

    Note: this is the average time of a request. The average was calculated by making thousands of requests on the local machine so the totals should not include network latency or bandwidth issues.

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!