我正在考虑允许用户下载存储在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
答案 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属性。