Displaying an image from SQL Server in ASP.NET MVC

I am trying to get an image from SQL Server (yes the datatype is image) and display it in a view in my ASP.NET MVC application. Does anyone know how this can be done? A working example would be appreciated.

0


a source to share


2 answers


Making a custom result is the cleanest way to handle this, here's a good example:



http://blog.maartenballiauw.be/post/2008/05/ASPNET-MVC-custom-ActionResult.aspx

+1


a source


My app uses this feature:

    //
    // GET: /FileManager/GetFile/ID
    //[CompressFilter(Order = 1)]
    [OutputCache(Order = 2, Duration = 600, VaryByParam = "ID")]
    //[OutputCache(Duration = 600, VaryByParam = "ID", Location = System.Web.UI.OutputCacheLocation.ServerAndClient)]
    public ActionResult GetFile(int ID)
    {
        FileService svc = new FileService(new SqlFileRepository(base.ConnectionString));

        KsisOnline.Data.File result = svc.GetFileByID(ID);

        return File(result.Data, result.MimeType, result.UploadFileName);
    }

      

.. as you can see from the comments, my biggest problem so far has been caching the image result. (btw: the method is called GetFile

coz, it returns images, PDFs, and others)



I also have a number of helpers that I use to render images, and their variations for images that come from the DB:

    public static string Image(this HtmlHelper helper,
        string classText, string sourcePath, string altText, string width, string height)
    {
        return Image(helper, classText, sourcePath, altText, width, height, null);
    }

    public static string Image(this HtmlHelper helper,
        string classText, string sourcePath, string altText, string width, string height, object htmlAttributes)
    {
        StringBuilder sb = new StringBuilder();
        if (htmlAttributes != null)
            foreach (PropertyInfo p in htmlAttributes.GetType().GetProperties())
                sb.AppendFormat(@" {0}=""{1}""", p.Name, p.GetValue(htmlAttributes, null).ToString());

        if (htmlAttributes == null)
            return String.Format(@"<img{0} src=""{1}"" alt=""{2}"" width=""{3}"" height=""{4}"" />",
                String.IsNullOrEmpty(classText) ? String.Empty : String.Format(@" class=""{0}""", classText),
                (new UrlHelper(helper.ViewContext.RequestContext)).Content(sourcePath),
                altText, width, height);
        else
            return String.Format(@"<img{0} src=""{1}"" alt=""{2}"" width=""{3}"" height=""{4}""{5} />",
                String.IsNullOrEmpty(classText) ? String.Empty : String.Format(@" class=""{0}""", classText),
                (new UrlHelper(helper.ViewContext.RequestContext)).Content(sourcePath),
                altText, width, height, sb.ToString());
    }

    public static string DBImage(this HtmlHelper helper,
      string classText, int fileID, string altText, string width, string height)
    {
        return DBImage(helper, classText, fileID, altText, width, height, null);
    }

    public static string DBImage(this HtmlHelper helper,
        string classText, int fileID, string altText, string width, string height, object htmlAttributes)
    {
        return Image(helper, classText, @"/FileManager/GetFile/" + fileID.ToString(),
            altText, width, height, htmlAttributes);
    }

      

.. helpers DBImage

are those that use an action GetFile

.

+3


a source







All Articles