将PDF的Sitecore渲染从.ashx更改为DownloadMedia.aspx的后果?media={GUID}

本文关键字:后果 media aspx GUID DownloadMedia Sitecore PDF ashx | 更新日期: 2023-09-27 17:58:54

在我们的sitecore网站上,我们有两种方法将项目(文章)与相关媒体PDF项目关联起来:

  1. 一种方法是单击该内容项的内容值字段的RichTextEditor中的"插入Sitecore链接"按钮,这样会产生以下内容:

<a href="~/media/EB5BA6C0CCF4781B668DE863EE996D9.ashx">emad_pdf_test_1<a>

<a href="~/media/1978B759E83348CFB23870AE31494765.ashx">emad_pdf_test_2<a>

  1. 第二种方法是通过PDF字段(具有"打开文件"、"下载"、"查看文件"answers"清除"选项)选择相关媒体PDF项目。这会产生类似于:

<一href="/DownloadMedia.aspx?media={EB5BA6C0-CCF-4781-B668-DE863EE996D9}">下载PDF<a>

第一种方式(#1)已经导致一些人在IE8&IE9.无论如何,经过一番痛苦的尝试和错误,我们决定将所有像#1(.ashx)一样渲染的地方改为像#2(DownloadMedia.aspx?media={GUID})一样渲染。我们知道,如果我们这样做,所有浏览器中的所有PDF下载都可以工作。

我们意识到,如果我们在sitecore中实际删除相关的PDF媒体项目,如果在RichTextEditor中,该PDF媒体项目在DownloadMedia.aspx中被引用,sitecore将不会警告我们链接断开?media={GUID}格式。有什么办法解决这个问题吗?

此外,将PDF的呈现方式从".ashx"更改为"DownloadMedia.aspx"是否会对我们产生其他影响?

将PDF的Sitecore渲染从.ashx更改为DownloadMedia.aspx的后果?media={GUID}

当通过标准Sitecore链接(和媒体处理程序)进行链接时,您可以更新默认的web.config以强制下载PDF文件。这意味着您在使用#1 时不需要更改任何链接方式

<mediaTypes>
  <mediaType name="PDF file" extensions="pdf">
    <mimeType>application/pdf</mimeType>
    <forceDownload>true</forceDownload> <!-- this value has changed -->
    <sharedTemplate>system/media/unversioned/pdf</sharedTemplate>
    <versionedTemplate>system/media/versioned/pdf</versionedTemplate>
  </mediaType>
<mediaTypes>

某些版本的IE中的PDF问题是已知的问题,Sitecore 7.2现在默认情况下将forceDownload更改为true

媒体请求

一些浏览器在下载和打开PDF时出现问题具有默认Sitecore配置的文件。此问题已由修复将web.config文件中元素的元素更改为true。(368967)

Sitecore CMS 7.2 的发布历史

编辑:

这个问题似乎与分块传输编码和IE9/Acrobat Reader插件不能很好地配合有关。你可以在这里阅读更多信息,但修复方法是在config:中禁用媒体项目的分块传输编码

<setting name="Media.EnableRangeRetrievalRequest" value="false"/>

最初的答案仍然是OP问题的最佳选择,即如何强制浏览器下载PDF文件,但这解决了他为什么在IE8/9浏览器上出现问题的具体问题。

您可以扩展媒体处理程序来继续使用sitecore链接并强制下载。

http://sitecoreblog.lexshyba.com/2010/07/file-download-dialog-box-for-sitecore.html?m=1