Sitcore Download MediaLibrary Source

本文介绍了一种在网站上实现文件下载功能的方法,通过判断请求参数来决定从Sitecore数据库中获取媒体文件还是通过URL下载文件,并展示了具体的C#代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public partial class Download : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(Request["mid"]))
                {
                    MediaItem mi = Sitecore.Context.Database.GetItem(new ID(Request["mid"]));
                    Stream fileStream = mi.GetMediaStream();
                    byte[] buffer = new byte[fileStream.Length];
                    fileStream.Read(buffer, 0, (int)fileStream.Length); 
                    fileStream.Close();
                    Response.ContentType = mi.MimeType;
                    Response.AddHeader("content-disposition", "attachment; filename=" + mi.DisplayName + "." + mi.Extension);
                    Response.BinaryWrite(buffer);
                    Response.Flush();
                    Response.End();
                }
                else
                {

                    if (String.IsNullOrEmpty(Request["fileUrl"]) || String.IsNullOrEmpty(Request["fileType"]))
                    {
                        Page.ClientScript.RegisterStartupScript(Page.GetType(), "script", "<script type='text/javascript'>alert('下载失败');window.opener=null;window.open('','_self'); window.close();</script>");
                    }
                    else
                    {
                        string url = "http://" + System.Web.HttpContext.Current.Request.Url.Host.ToString() + ":" + System.Web.HttpContext.Current.Request.Url.Port.ToString() + Request["fileUrl"];
                        WebClient my = new WebClient();
                        byte[] mybyte;
                        mybyte = my.DownloadData(url);
                        MemoryStream ms = new MemoryStream(mybyte);
                        //下面直接输出
                        Response.ClearContent();
                        Response.ContentType = "application/x-msdownload";
                        string filename = "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + Request["fileType"];
                        Response.AddHeader("Content-Disposition", filename);
                        Response.BinaryWrite(mybyte);
                        Response.Flush();
                        Response.End();
                    }
                }
            }
            catch
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "script", "<script type='text/javascript'>alert('下载失败');window.opener=null;window.open('','_self'); window.close();</script>");
            }
        }
    }

 

转载于:https://www.cnblogs.com/wokao100000/p/4216423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值