Sitecore 8.0允许从媒体库

时间:2016-12-13 04:12:27

标签: sitecore sitecore8

我正在考虑允许用户下载存储在Sitecore媒体库中的PDF。基本上,我发送的电子邮件中包含用户可以下载的PDF链接。

这可能吗?如果是这样,使用什么URL?

我们正在使用Sitecore 8.1,.Net MVC和GlassMapper。 在玻璃映射器中,Ive尝试使用模型中File的Src属性作为链接的href,它给出了ashx文件的路径但是看起来不起作用..

来自我的GlassMapper模型:

[SitecoreField("FileForDownload", UrlOptions = Glass.Mapper.Sc.Configuration.SitecoreInfoUrlOptions.AlwaysIncludeServerUrl)]
public virtual File FileForDownload { get; set; }

生成的FileForDownload.Src仍然提供可能导致问题的相对路径 例如" / ~/media/XXX/Annual_Report2004Version2.ashx

这可能是GlassMapper中的一个突出问题:enter link description here

我的电子邮件中的锚点是使用

设置的
<a href='" + pub.FileForDownload.Src + "' download>" + pub.Description + "</a>

我也尝试过使用代码

 MediaUrlOptions muo = new MediaUrlOptions();
 muo.AlwaysIncludeServerUrl = true;
 var item = Sitecore.Context.Database.GetItem(new ID(pub.Id));
 String url = MediaManager.GetMediaUrl((MediaItem)item, muo);

但那给了我一个导致404的网址:

http://domainname/-/media/C9F3404515DC46288C5D73E123ACBD5D.ashx

2 个答案:

答案 0 :(得分:1)

如果您使用的是glass mapper,则需要在Field中添加属性以获取绝对URL:

[SitecoreField("File",UrlOptions =Glass.Mapper.Sc.Configuration.SitecoreInfoUrlOptions.AlwaysIncludeServerUrl)]
 public virtual File PDFFile{ get; set; }

答案 1 :(得分:-1)

我认为你的锚标签上需要一个名为“download”的html属性。 这将允许下载.pdf而不是在新选项卡或窗口中打开.pdf。 如果使用GlassMapper RenderLink渲染锚点,请尝试传入名为download的html属性。