2016-12-13 2 views
0

私は、ユーザーがSitecoreメディアライブラリに保存されているPDFをダウンロードできるようにしています。基本的には、ユーザーがダウンロードできるPDFへのリンクが付いた電子メールを送信しています。Sitecore 8.0メディアライブラリからのファイルのダウンロードを許可する

これは可能ですか?もしそうなら、どんなURLを使うべきですか?

Sitecore 8.1、.Net MVC、GlassMapperを使用しています。

:アイブ氏は私のGlassMapperモデルから.. ASHXファイルへのパスを提供しますが、それdoesntのは仕事に見えるリンクのHREFとしてモデルに

をファイルのsrcプロパティを使用してみましたガラスマッパーで

[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

私の電子メールでのアンカーは、セットアップがアイブ氏はまた、コード

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になり、URL与えるthatsの

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

を使用している:

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

+1

メディアアイテムのURLを取得しているコードを表示します –

+0

「ダウンロード」というhtml属性を追加しようとしましたか? –

+1

電子メールには絶対的なURLではなく相対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"のようなURLを取得しています\t ...私はGlassFlashでマップされたFileForDownloadオブジェクトのSrcプロパティにアクセスしてこのURLを取得します –

0

アンカータグに「ダウンロード」というhtml属性が必要だと思います。 これにより、新しいタブまたはウィンドウで開くのではなく、.pdfをダウンロードできるようになります。 GlassMapper RenderLinkを使用してアンカーをレンダリングすると、downloadというhtml属性が渡されます。

関連する問題