以pdf格式创建sitecore项目

以pdf格式创建sitecore项目,pdf,sitecore8,sitecore-mvc,Pdf,Sitecore8,Sitecore Mvc,您好,我现在正在将其他cms迁移到sitecore 因此,我的要求是在各自的url中查看pdf 现有网站url:DOMAIN.COM/presslease/one 这将在浏览器中显示PDF内容 新站点预期Url:NEWDOMAIN.COM/presslease/one 同样,在我的sitecore内容中,我尝试在根目录下创建一个pressrelease项目,其子项是one.pdf。但在这之后,当我给出了NEWDOMAIN.COM/pressrease/one这样的url时,我无法查看我的pdf

您好,我现在正在将其他cms迁移到sitecore

因此,我的要求是在各自的url中查看pdf

现有网站url:DOMAIN.COM/presslease/one

这将在浏览器中显示PDF内容

新站点预期Url:NEWDOMAIN.COM/presslease/one

同样,在我的sitecore内容中,我尝试在根目录下创建一个pressrelease项目,其子项是one.pdf。但在这之后,当我给出了NEWDOMAIN.COM/pressrease/one这样的url时,我无法查看我的pdf


并且需要预期的行为是在浏览器中打开pdf文件,就像media(/-/media/pressrelease/one)项目可以查看一样

在App_config/include文件夹中创建AllowedExtensions.config(如果它还不存在)并添加以下sitecore配置。该配置确保通过URL允许PDF

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <preprocessRequest>
        <processor type="Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel">
          <param desc="Allowed extensions (comma separated)">aspx, ashx, asmx, xml, txt,pdf,png</param>
          <param desc="Blocked extensions (comma separated)">*</param>
          <param desc="Blocked extensions that stream files (comma separated)">*</param>
          <param desc="Blocked extensions that do not stream files (comma separated)"/>
        </processor>
      </preprocessRequest>
    </pipelines>
  </sitecore>
</configuration>

aspx、ashx、asmx、xml、txt、pdf、png
*
*

我已使用以下解决方案解决了我的问题

  • 首先,我创建了一个内容项NEWDOMAIN.COM/presslease/one

  • 此项包含来自我的模板的两个字段,如下所示

  • 然后,我为这个内容项创建了一些单独的布局文件,在布局中我创建了显示pdf的代码。(在一些布局中,我也可以使用这种方法下载文件。)

  • if(mediaResult.mediaItem != null)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = mediaResult.mediaItem.MimeType;
        HttpContext.Current.Response.AppendHeader("Content-Disposition", string.Format("inline;filename=\"{0}\"", mediaResult.mediaName));
        HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.OK;
        HttpContext.Current.Response.BufferOutput = true;
        // Copy the media stream to the response output stream
        mediaResult.mediaItem.GetMediaStream().CopyTo(HttpContext.Current.Response.OutputStream);
        // As momma always said: Always remember to flush
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();
    }