【问题标题】:Best practice for storing uploaded images存储上传图像的最佳实践
【发布时间】:2015-06-23 15:31:49
【问题描述】:

在我的 XPages 应用程序中,用户可以上传图像。目前,每个图像都被缩略图化,然后将缩略图存储为单个 NotesDocument 的附件。在浏览器中,拇指通过其 Notes 附件 URL“[UNID]/$FILE/[ATTACHMENTNAME]”引用。

对我来说,每个图像有 1 个文档似乎有点“矫枉过正”,我想当许多图像文档在同一个数据库中时,这也会对性能产生影响,例如在创建视图索引时获取与其他文档相关的视图。因此,如果您只想在前端/浏览器中显示图像并且不需要存储有关它们的任何其他信息,我想问是否有更好的方法来存储图像。

我想将拇指文件直接保存到文件系统上的文件夹中,然后通过 http(s) 访问该文件夹。然而,我不知道该怎么做。我还考虑将拇指保存到 WebContent 文件夹,但我也不知道使用这种方法的缺点。有没有人有这方面的经验或者可以为我的问题提供另一种解决方案?

【问题讨论】:

    标签: xpages lotus-notes lotus-domino


    【解决方案1】:

    我认为您不能将它们保存到 NSF 的 WebContent 文件夹中,这不是一个好主意。它会保存设计中的图像,但图像应该是数据。

    您可以将它们保存到 \domino\html 下的文件夹中,但同样不建议这样做。如果你想要集群,文件将只在一台服务器上;他们将没有任何安全措施,因此任何人都可以访问它们;如果有任何损坏,您必须恢复;保存它们可能需要更高的访问权限;管理员可能不愿意授予您查看它们的权限,因此支持会更加困难。

    我推荐的解决方案是将它们存储在数据库中。它可以复制,Domino 可以相应地处理它。此外,您还拥有开箱即用的所有相关安全性。在数据库/服务器上启用 DAOS 后,它们不会影响数据库的物理大小。

    关键是他们是否只上传图像或图像+元数据或其他数据。例如。如果它是个人文档并且他们正在上传个人资料图片。如果是这种情况,我会将图像存储在该个人文档中。由于图像无法为视图编制索引,因此它不会影响视图索引,因此这种担忧消失了。

    如果它们必须单独存储在一个文档中,并且您不希望它与其他数据在同一个数据库中,请创建一个单独的数据库并将其存储在那里。无论您是将其存储在单独的数据库中还是文件系统中,都需要存储它们之间的关系,因此没有理由避免这种方法。另外,您仍然可以拥有相同的安全性、使用 DAOS 等。

    此外,您可能会发现更多关于如何执行此操作、如何对其进行故障排除等方面的支持,因为当 Domino 设计用于时,很少有应用程序或开发人员可能会采用存储在文件系统上的方法并且在文档中存储附件方面有着悠久的历史(例如,自从我 15 年前开始使用 Domino 以来就一直存在的文档库模板)。

    【讨论】:

    • 非常感谢您的详细回答。将个人资料图像上传到个人文档是我开始将拇指保存到额外文档的主要原因:包含个人文档的地址簿位于没有 http 访问权限的服务器上。因此,为了在浏览器中显示图像,我必须使用 http 任务在服务器上创建拇指...还允许匿名访问拇指。
    【解决方案2】:

    我创建了一个框架来执行此操作。对于上传 JPG 的图片,我会拍摄图像并调整其大小 2 次。我存储原始的“大”和“小”版本。所以我实际上创建了 3 个数据库……原始的、大型的和小型的……虽然它可能看起来有点矫枉过正……它实际上非常干净,我创建了 Java 类来将所有 3 种大小作为一个来处理。所以你删除了一张照片……它们都被删除了。我强烈建议每个文档 1 个附件。

    我还没有得到解释它的视频。但是,如果您想深入研究,可以在此处找到我应该有效的早期解决方案。 https://bitbucket.org/leedy/filevault

    【讨论】:

    • 感谢您的回答。一般来说,您的框架似乎使用与我的相同的方法来保存图像/拇指,即使您以更复杂的方式进行操作。您还将图像另存为文档附件的事实让我相信,这种方法并没有我预期的那么错误 :)
    【解决方案3】:

    如果您使用 CKEditor 上传图像,则图像存储在 mime 对象中,您实际上可以将图像以多个版本存储在 mime 对象中,作为具有不同名称的不同附件,以供以后参考。 我没有任何现成的代码,但应该可以做到。

    【讨论】:

    • 感谢您的回答。即使将图像存储在 MIME 实体中,我最终仍会将图像数据包含在 NotesDocument 中,这实际上是我想要避免的。此外:如果图像附加到 MIME 实体,你知道附件 url 是什么样的吗?
    • 它将存储在 mime 块中,所以我认为 url 将类似于 cid:myimage.jpg
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2010-10-18
    • 2011-10-17
    相关资源
    最近更新 更多