在浏览器中打开PDF而不是下载它

6
在将PDF上传到媒体档案库后,我正在尝试从网站上的页面链接到它。
在编辑内容时,我使用超链接工具,然后通过URL输入框选择要链接到的PDF。

enter image description here

保存并发布内容后,点击链接会下载PDF文件,但我没有看到任何明显的方法可以使用当前Composite提供的Media ID在浏览器中查看该文件。当呈现时,我们得到以下结果:
<a href="/media/64d5b13e-07f2-402f-9b1a-dcfd75d977da/F-KbnQ/CompositeDocumentation.pdf" target="_blank">pdf</a>

有没有一种方法可以不使用Media ID而只使用文件名来引用PDF文件?

这是请求/响应头信息: enter image description here

在阅读了Pauli Østerø所说的内容后,我理解了问题,但仍然无法想到解决方案。

我可以通过在href URL中通过开发者工具添加?download=false来在浏览器中查看PDF。但是当我尝试通过Composite添加?download=false到href中时,它不起作用,并且我会得到控制台输出:“资源被解释为文档,但传输类型为application/pdf:"http://c1.wittenauers.com/media/4afb7bc8-f703-469d-a9b2-a524d8f93dcb/ryc7iw/CompositeDocumentation.PDF"。”

这是Pauli要求的网络跟踪。在图片中,我包括了在源代码视图中添加?download=false到URL的部分,以防可能还有其他添加方式。

enter image description here

编辑:页面的URL和标题。

这是包含链接的页面链接: http://c1.wittenauers.com/cafe/test

这是包含链接的页面的标题: 输入图像描述


我不熟悉媒体存档,但是该URL可能以附件的形式返回PDF文件。也许尝试将锚点的类型属性设置为application/pdf。例如:<a href="/media/64d5b13e-07f2-402f-9b1a-dcfd75d977da/F-KbnQ/CompositeDocumentation.pdf" target="_blank" type="application/pdf">pdf</a> 或许在高级选项卡中有一些相关设置? - Amber
@bpprox22,您能否在通过Composite添加?download=false到C1页面上的链接后单击该链接时发布网络跟踪信息? - Pauli Østerø
@bpprox22 我需要看到浏览器请求的确切URL以及服务器返回的标头,就像你发布的第一张图片一样 :) 您也可以前往https://gitter.im/Orckestra/C1-CMS进行更直接的交流,然后我们可以在解决方案可行时在此处发布。 - Pauli Østerø
@PauliØsterø,请查看更新后的问题。希望我理解了你所要求的内容。 - bpprox22
@PauliØsterø 我通过Composite中的源编辑器将查询字符串添加到链接中。一旦页面发布并浏览到它,它会擦除?download=false查询字符串。而且你是正确的——如果你在链接中添加?download=false,它会在浏览器中查看。然而,我需要它最初在浏览器中查看,但是Composite似乎正在覆盖它。有什么想法吗? - bpprox22
显示剩余6条评论
2个回答

4
从你所经历的情况来看,我认为Composite已将您上传的文件的MIME类型弄错了,因此未能正确地告诉浏览器该文件是pdf格式,因此浏览器不知道该怎么处理它。
尝试删除文件并重新上传。
尝试在文件链接的结尾添加“?download=false”。您可能需要进入内容编辑器的源代码模式。 这是源代码中负责此行为的确切行,其逻辑如下:
如果没有名为download的查询字符串,则附件由Mime Type确定。只有png、gif和jpeg会内联显示,其余均以附件形式显示。
如果有一个名为download且值为false的查询字符串,则它将覆盖Mime Type检查,并始终强制Content-Disposition内联显示。
我在此进行了一项快速测试以显示行为符合预期。至少在我的Windows 8 Chrome浏览器中。
强制下载:https://www.dokument24.dk/media/9fdd29da-dde8-41f7-ba4c-1117059fdf06/z8srMQ/test/Prisblad%202015%20inkl%20moms.pdf 在浏览器中显示:https://www.dokument24.dk/media/9fdd29da-dde8-41f7-ba4c-1117059fdf06/z8srMQ/test/Prisblad%202015%20inkl%20moms.pdf?download=false

不幸的是,这些方法并没有解决问题。您是否曾经能够从您所工作的复合网站中在浏览器中打开PDF文件? - bpprox22
@bpprox22 我必须承认我从未遇到过你所描述的问题。我不知道你有多么懂技术,但你能否使用Fiddler或浏览器中的开发者工具来查看请求PDF文件时发送和接收的标头信息呢?你可以在问题中更新这些信息。 - Pauli Østerø
我已经将标题信息添加到我的问题中。抱歉耽搁了——假期和其他项目占据了一些优先权。 - bpprox22
@PauliØsterø,我只是好奇,根据您的了解,是否已经有一种方法可以使PDF默认在浏览器中打开,而不是默认下载?我将在C1-CMS网站上存储约1000个PDF,并需要客户从浏览器中打开它们。 - klewis
@blackhawk 不好意思,那需要对 ShowMedia.ashx 文件进行小的更改。虽然不是什么大问题,但在升级网站时要记得不要丢失这样的自定义设置。 - Pauli Østerø
显示剩余2条评论

3

在Pauli的答案基础上,您可以将以下代码片段添加到页面模板中,以自动向所有pdf链接添加“?download=false”。

$("a").each(function () {
    if (this.href.includes(".pdf")) {
        this.href = this.href + "?download=false";
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接