2016-12-13 91 views
0

我正在寻找允许用户下载存储在Sitecore媒体库中的PDF文件。 Basicaly,我正在发送一封电子邮件,其中包含用户可以下载的PDF文件的链接。Sitecore 8.0允许从媒体库中下载文件

这可能吗?如果有,请使用哪个网址?

我们使用的是Sitecore 8.1,.Net MVC和GlassMapper。 在玻璃映射伊夫尝试使用文件的src属性的模型作为HREF为其给人以ashx的文件,但是,这并不表现为运行路径的链接..

从我GlassMapper型号:

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

产生的FileForDownload.Src仍给予其可能导致5月的相对路径问题 如“/~/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

+1

向我们展示您获取媒体项目网址的代码 –

+0

您是否尝试添加名为“下载”的html属性? –

+1

确保您的电子邮件中包含绝对URL而不是相对的。亲戚会在现场工作,但不会在电子邮件中工作。 – Anton

回答

1

如果您使用玻璃贴图工具,则需要将字段添加属性以获取绝对URL:

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

感谢,但即使这个属性我得到一个像“/-/media/XXX/Annual_Report2004Version2.ashx”\t网址...我通过访问我的FileForDownload对象的Src属性通过玻璃映射器映射 –

0

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