Surendra Sharma

Surendra Sharma

Search This Blog

Thursday, June 22, 2017

How to download Sitecore media library item on client browser programmatically


Sitecore Media Item Download
Sitecore Media Item Download


One of my friend struggling for downloading PDF file from Sitecore media library on client browser
. So I thought to write a code on the same.


Below code can force any media library item to be downloaded on client browser.

private void DownloadMediaLibraryItem()
{
    //Get Media Item
    var mediaItem = Sitecore.Data.Database.GetDatabase("master").GetItem(new ID("{5D8B8B5B-BD43-4F8E-B1B5-EACA7D78F0DE}"));
    var media = Sitecore.Resources.Media.MediaManager.GetMedia(mediaItem);

    //Get Media Stream in buffer
    var mediaStream = media.GetStream();
    byte[] buffer = new byte[(int)mediaStream.Length];
    mediaStream.Stream.Read(buffer, 0, (int)mediaStream.Length);

    //Send response to browser
    System.Web.HttpContext.Current.Response.Clear();
    System.Web.HttpContext.Current.Response.ClearContent();
    System.Web.HttpContext.Current.Response.ClearHeaders();
    System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
    System.Web.HttpContext.Current.Response.AddHeader("Content-Length", buffer.Length.ToString());
    System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + mediaItem.Name + ".pdf");
    System.Web.HttpContext.Current.Response.BinaryWrite(buffer);
    System.Web.HttpContext.Current.Response.Flush();
    System.Web.HttpContext.Current.Response.End();
}

I hope you like this Sitecore article. Stay tuned for more Sitecore related articles.

Till that happy Sitecoring :)
 
Please leave your comments or share this code if it’s useful for you.

1 comment:

  1. I am getting this error: "OutputStream is not available when a custom TextWriter is used."

    when executing this line:
    System.Web.HttpContext.Current.Response.BinaryWrite(buffer);

    ReplyDelete