Xpages 存储上传图像的最佳实践

Xpages 存储上传图像的最佳实践,xpages,lotus-notes,lotus-domino,Xpages,Lotus Notes,Lotus Domino,在我的XPages应用程序中,用户可以上载图像。此时,每个图像都被用拇指钉住,然后拇指作为附件存储到单个NotesDocument。在浏览器中,拇指通过其Notes附件url“[UNID]/$FILE/[ATTACHMENTNAME]”引用 在我看来,每个图像有一个文档似乎有点“矫枉过正”,我想当许多图像文档位于同一数据库中时,这也会对性能产生影响,例如,为与其他文档相关的视图创建视图索引时。因此,我想问,如果您只想在前端/浏览器中显示图像,而不需要存储有关图像的任何附加信息,是否有更好的方法来

在我的XPages应用程序中,用户可以上载图像。此时,每个图像都被用拇指钉住,然后拇指作为附件存储到单个NotesDocument。在浏览器中,拇指通过其Notes附件url“[UNID]/$FILE/[ATTACHMENTNAME]”引用

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


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

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

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

我建议的解决方案是将它们存储在数据库中。它可以复制,Domino可以相应地处理它。此外,您还拥有所有现成的相关安全功能。在数据库/服务器上启用DAO后,它们不会影响数据库的物理大小

关键是他们上传的是图像还是图像+元数据或其他数据。例如,如果是个人文档,他们正在上传个人资料图片。如果是这种情况,我会将图像存储在Person文档中。因为图像不能为视图编制索引,所以它不会影响视图索引,所以问题就消失了

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


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

我创建了一个框架来实现这一点。对于上传JPG时的图片,我拍摄图像并调整其大小2次。我将原始图像存储为“大”和“小”版本。所以我实际上创建了3个数据库…原始的、大的和小的…虽然这看起来有点过分了…它实际上非常干净,我创建了Java类来处理所有3个大小的数据库。所以你删除了一张图片…它们都被删除了。我强烈建议每个文档添加一个附件


我还没有得到一个视频来解释它。但是如果你想深入研究,可以在这里找到我早期的解决方案。

如果你使用CKEditor上传图像,图像存储在mime对象中,你可以在mime对象中以不同的附件和不同的na存储多个版本的图像我以后参考。
我没有任何现成的代码,但应该可以这样做。

非常感谢您提供的详细答案。将个人资料图像上载到个人文档是我开始将拇指保存到额外文档的主要原因:包含个人文档的通讯簿位于没有http访问权限的服务器上。因此,为了显示浏览器中的e图像我必须使用http任务在服务器上创建thumb…还允许匿名访问thumb。谢谢你的回答。总体而言,你的框架似乎使用了与我相同的方法来保存图像/thumb,即使你使用了更复杂的方法。事实上,你也将图像保存为document附件让我相信这种方法并不像我预期的那样错误:)谢谢你的回答。即使将图像存储在MIME实体中,我最终还是会将图像数据放在NotesDocument中,这实际上是我想要避免的。此外:如果图像附加到MIME实体,您知道附件url是什么样子吗?它将存储在MIME块中,因此我认为url类似于cid:myimage.jpg