3

我希望在我的 CakePHP 应用程序中包含一个文档查看器,用于上传文档。我想要一个支持 Microsoft Word(.DOC 和 .DOCX)、Microsoft PowerPoint(.PPT 和 .PPTX)和 Adob​​e Portable Document Format (.PDF) 的查看器。

我希望我的用户能够查看文档,但不能下载。谷歌文档查看器很棒,但用户只需将 URL 插入地址栏并下载文档。

无论如何我可以与用户共享我的文档,就像可读的文档一样?

4

2 回答 2

5

首先你必须明白,当用户的浏览器显示一些文件/内容时,它已经在用户的机器上。它已经被下载了。没有“内容保留在服务器上,但用户可以看到”的神奇之处。数据总是从服务器传输到用户,用户可以让数据留在他的机器上——一种或另一种方式。

如果你理解这一点,你有几个选择:

  • 您不关心拥有该文件的用户。这是最明智的选择。所有其他方法都是用户讨厌的某种“DRM”。
  • 仅将用户应看到的数据传输到浏览器:
    • 生成用户正在查看的文档部分的图像并将其发送到浏览器。用户没有文本数据,需要执行许多请求才能下载所有文档。
    • 编写一个浏览器插件(java、flash、javascript),从服务器读取加密文档,解密它们(同样,在用户的机器上——这意味着他可以窥视它)并显示它。这样,用户不仅可以获取文档,还需要对其进行解密。

有现有的解决方案,即嵌入带有禁用下载选项的幻灯片共享演示文稿。不要试图发明你自己的,尤其是如果你不想在支持和持续增强的情况下走很长的路。

于 2011-06-14T11:16:49.283 回答
1

我使用谷歌文档查看器坚持以下准则。

  • 每次为文档生成随机 URL 地址(使用服务器端脚本和 htaccess。我正在使用 PHP 和 htaccess)。这不会让任何人直接访问该文件。
  • 使用 URL 编码时间和日期(通过使用任何服务器字符串编码脚本),以便文件只能在特定时间(比如说 5 分钟)内访问
  • 仅通过匹配 Google Document Viewer User Agent 输出文件。这只会让 Google Document Viewer 访问该文件,但不会让其他人访问,即使他们在浏览器中键入了该地址。

这仍然不是一种非常安全的方式,但对我有用。

于 2011-11-03T15:37:54.640 回答