nathank
(Nathan Kershaw)
1
目前,PDF 文件的核心处理方式是通过下载:
allaboutcats.pdf|附件(42.2 KB)
虽然这种方式功能完备,但对于最常见的使用场景——“我现在就想阅读”——尤其是移动设备上,却增加了几个不必要的步骤。
下载/保存文件的需求其实是次要的。虽然有时确实需要,但通常用户只是想阅读后继续其他操作。
Inline PDF Previews 这个技术提案通过在桌面端内嵌显示 PDF 解决了这个问题,且效果良好。然而,它忽略了以下常见情况:
- 移动设备上的 PDF 文件
- 多个 PDF 文件(因视觉杂乱)
- 在完整浏览器标签页中查看 PDF 文件
值得注意的是,还有其他下载 PDF 的途径。用户可以直接通过右键菜单或浏览器内嵌的 PDF 查看器下载文件。
建议:默认在浏览器中打开 PDF 文件
这个小调整能很好地解决上述两个问题,同时与 Discourse 中其他链接的默认行为保持一致。因此,按照提议的更改:
- 移动设备上的 PDF 链接通常在当前浏览器窗口中打开
- 桌面端的 PDF 链接(即内嵌 PDF 上方的链接)在新标签页中打开
- 当明确抑制内嵌行为时(通过在链接文本中添加空格)
我已将这些修改整合到以下 Pull Request 中:
3 个赞
chapoi
2
你们团队的任何人能帮忙看一下这个PR吗,@david?
david
(David Taylor)
4
我在PR中留下了一些关于代码本身的评论
当我点击这个链接时,PDF会在浏览器中打开,而不是下载。你看到的情况不同吗?
我使用的是macOS上的Chrome浏览器。我们并没有在Meta上运行这个d-pdf-previews主题组件。
2 个赞
nathank
(Nathan Kershaw)
5
在 meta.discourse.org 上,我上面的链接与此页面在同一标签页中打开(就像您描述的那样)。在 safe-mode(安全模式)下也是如此。
然而,在我最近更新的三个站点上(禁用了 TC),它会尝试下载。在 safe-mode 下也是如此。我不确定为什么会这样。我找不到任何控制此功能的站点设置。
无论原因是什么,我的分支为我的站点很好地解决了这个问题!
这对我来说毫无意义!!
1 个赞
david
(David Taylor)
7
我将看看我们是否可以在核心中修复这个不一致性。有进展会在这里更新。
2 个赞
david
(David Taylor)
10
我们有一个正在进行中的工作。希望在接下来的几周内能够完成。这有点棘手,因为需要验证很多不同的情况(本地上传、s3、s3兼容、带 CDN、不带 CDN 等)。
4 个赞
pfaffman
(Jay Pfaffman)
11
我刚刚查看了今天上传到一个主题的 PDF,该主题位于一个最近更新的网站上,点击 PDF 链接会在我的浏览器中打开 CDN 上的 PDF URL,供参考。
2 个赞
david
(David Taylor)
12
此问题应自 SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub 以来已解决
我们现在有集中的逻辑来确定应“内联”显示哪些文件。这意味着 PDF 会始终内联显示,而一些安全性较低的文件类型会始终作为下载提供。这些更改应适用于所有类型的上传存储(本地和 S3,有或没有 CDN)。
5 个赞
nathank
(Nathan Kershaw)
15
大卫,我刚刚测试了这一点——虽然这在桌面上肯定已经修复了,但在移动设备上似乎并非如此。
当我在移动设备上点击 PDF 链接时,我会收到下载提示(这不是我想要的)。我希望它能直接在浏览器中打开(即与桌面端相同),无论是否安装了 TC。
david
(David Taylor)
16
您能详细说明一下您的设置(S3?CDN?)和您的移动设备操作系统吗?
在这里点击 OP 中的 PDF 在我的 iPhone 上似乎可以内联正确打开。
1 个赞
Canapin
(Coin-coin le Canapin)
17
那 mp4 文件呢?在大多数网站上,mp4 链接自然会在浏览器中播放它们,但在 Discourse 中却不会,这相当令人恼火 
示例:\u003chttps://unicyclist.com/uploads/default/original/3X/4/f/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4\u003e
预期行为:\u003chttps://d.canapin.dev/uploads/default/original/2X/4/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4\u003e
david
(David Taylor)
18
理论上,mp4 应该内联提供:
它使用了:
您是如何实现这一点的?即与 unicyclist.com 有何不同?
Canapin
(Coin-coin le Canapin)
19
2 个赞
nathank
(Nathan Kershaw)
21
情况有变化!!!我今天又更新了一次,它们现在在移动设备上内联打开得很好。
您是否为我们这些“简单的自托管用户(没有 CDN/S3)”调整了什么?还是这只是一个愚蠢的缓存问题?
david
(David Taylor)
22
自上述安全修复以来,没有进行任何调整。可能是缓存问题,特别是如果您第一次通过用户界面进行升级。如果您现在进行了完全重建,那将会重置 NGINX 缓存。很高兴听到它现在可以正常工作了!
我为 mp4 问题开了一个新主题
3 个赞