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.
I am getting this error: "OutputStream is not available when a custom TextWriter is used."
ReplyDeletewhen executing this line:
System.Web.HttpContext.Current.Response.BinaryWrite(buffer);