HOE TO RETURN IMAGE IN ASP.NET MVC?

marcel ethan

Total Post:104

Points:728
Posted by  marcel ethan
 1125  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.

      Modified On Apr-06-2018 06:52:14 AM

Answer

NEWSLETTER

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