在我的XPage应用程序中,用户可以上传图像。此时,每个图像都是缩略图,然后将拇指存储为单个NotesDocument的附件。在浏览器中,拇指是由他们的Notes附件网址“[UNID] / $ FILE / [ATTACHMENTNAME]”引用的。
对我而言,每张图像有一个文档似乎有些“过度杀伤”,我想当许多图像文档在同一个数据库中时,这也会对性能产生影响,例如在创建视图索引时用于与其他文档相关的视图。因此,如果您只想在前端/浏览器中显示图像并且不需要存储有关它们的任何其他信息,我想问一下是否有更好的方法来存储图像。
我想将拇指文件直接保存到文件系统上的文件夹中,然后通过http(s)访问该文件夹。然而,我不知道该怎么做。我还想过将拇指保存到WebContent文件夹,但我不知道使用这种方法的缺点。有没有人有这方面的经验或可以为我的问题提供另一种解决方案?
答案 0 :(得分:6)
我认为您无法将它们保存到NSF的WebContent文件夹中,这不是一个好主意。它会将图像保存在设计中,但图像应该是数据。
您可以将它们保存到\ domino \ html下的文件夹中,但同样不建议这样做。如果要进行群集,则文件只能在一台服务器上;他们没有任何安全保障,所以任何人都可以访问它们;如果有任何腐败,你将不得不恢复;保存它们可能需要更高的访问权限;管理员可能不愿意让您查看它们,因此支持将更加困难。
我推荐的解决方案是将它们存储在数据库中。它可以复制,Domino可以相应地处理它。此外,您拥有开箱即用的所有相关安全性。在数据库/服务器上启用DAOS后,它们不会影响数据库的物理大小。
关键是他们是仅上传图片或图片+元数据还是其他数据。例如。如果它是个人文档,他们正在上传个人资料图片。如果是这种情况,我会将图像存储在该Person文档中。因为图像无法为视图编制索引,所以它不会影响视图索引,因此关注点会消失。
如果它们必须单独存储在文档中,并且您不希望它与其他数据位于同一数据库中,请创建一个单独的数据库并将其存储在那里。无论您是将其存储在单独的数据库中还是存储在文件系统中,都需要在它们之间存储关系,因此没有理由避免使用该方法。此外,您仍然可以使用相同的安全性,使用DAOS等。
此外,您可能会找到更多支持,如何执行此操作,如何对其进行故障排除等,因为当Domino设计为Domino时,很少有应用程序或开发人员可能采用存储在文件系统上的方法并且在文档中存储附件的历史很长(例如,自从我15年前开始使用Domino以来一直存在的文档库模板)。
答案 1 :(得分:4)
我创建了一个框架来执行此操作。对于上传JPG时的图片,我拍摄图像并调整大小2次。我将原始版本存储为“大”和“小”版本。所以我实际上创建了3个数据库......原始,大小......虽然它看起来有点过分......它实际上非常干净,我已经创建了Java类来处理所有3种大小。所以你删除了一张图片......它们都被删除了。我强烈建议每份文件附上一份附件。
我还没有得到解释它的视频。但是如果你想深入了解我的早期解决方案应该可以找到。 https://bitbucket.org/leedy/filevault
答案 2 :(得分:1)
如果使用CKEditor上传图像,图像将存储在mime对象中,您实际上可以将图像存储在mime对象内的多个版本中,作为具有不同名称的不同附件供以后参考。 我没有任何现成的代码,但应该可以这样做。