xpages:附件如何在网页中运行

时间:2016-01-07 16:50:14

标签: xpages xpages-ssjs

这里的上下文是,在CMS类型的应用程序中,创建内容的用户喜欢重现Notes在文本中任何位置具有附件的方式,而不仅仅是页面底部的附件列表。创建页面时,他们希望能够使用链接和img标签立即创建指向附件的链接,而不是先保存文档然后再次编辑。

我找到了YouAtNotes HTML5多文件上传控件,该控件允许用户在实际保存文档之前上传附件。然后保存上传到befor ethe doc的附件的URL:

http://myserver/myDB.nsf/xsp/.ibmmodres/persistence/DominoDoc-NEW_569-Body/indifference.jpg

我在CKEditor中使用此URL来创建图像,它看起来没问题:图像显示在编辑器中并具有以下URL:

/myDB.nsf/xsp/.ibmmodres/persistence/DominoDoc-NEW_569-Body/insanity.jpg

然后我保存文档,它仍然看起来不错。图像显示且URL仍然是:

http://myserver/mydb.nsf/xsp/.ibmmodres/persistence/DominoDoc-NEW_569-Body/indifference.jpg

我关闭浏览器,再次打开页面,现在我看到我的图片没有显示,但网址仍然是:​​

/Belair/xBiblio.nsf/xsp/.ibmmodres/persistence/DominoDoc-NEW_569-Body/indifference.jpg

但是如果我查看下载控件使用的URL,那就是:

http://myserver/mydb.nsf/xsp/.ibmmodres/domino/OpenAttachment/belair/xbiblio.nsf/E4E384094564EE9E85257F33005953AE/Body/indifference.jpg

为什么会改变?

是否有关于整个附件过程如何工作的文档,因此我可以理解它并向用户提供适当的指示,以便他们可以创建有效的链接。

我们的发布代码也具有特殊性:我们需要保留已发布文档的UNID,以便使用UNID创建的链接仍然有效。这是一个内容很多的应用程序,许多外部应用程序链接到它。因此,当我们发布时,我们实际上将草稿的所有内容复制到已发布的文档中,因此UNID与草稿文档不同,因此我们在附件链接方面存在问题。但这是别的......

1 个答案:

答案 0 :(得分:2)

网址“/Belair/xBiblio.nsf/xsp/.ibmmodres/persistence/DominoDoc-NEW_569-Body/indifference.jpg”与文档保存前的临时位置相关。这是标准功能,因为

  1. 对于SSJS / Java将文件保存到NSF中,必须在提交之前将其上传到服务器。
  2. 用户尚未选择保存文件,因此不应将其添加到NSF。
  3. 该文档尚未保存,因此即使将其保存到NSF,也不存在将其保存到的文档。
  4. 网址的组成部分是:

    • “/ Belair / xBiblio.nsf”,它最终需要提交的数据库的URL。
    • “xsp / .ibmmodres / persistence”,一个URL,对应于存储此NSF的临时文件的物理文件夹位置,基于NSF的xsp.properties;如果在NSF的xsp.properties中没有定义任何内容,则使用服务器的xsp.properties;如果没有定义,则使用默认位置。
    • “DominoDoc-NEW_569”,对未保存的新dominoDocument数据源的临时引用。如果您关闭浏览器并重新打开它,您将获得一个不同的临时dominoDocument数据源引用,因此我不希望图像显示。否则,不同的用户可以获得彼此的附件。
    • “ -​​ Body”,文件需要保存的字段。
    • “/ indifference.jpg”文件名。

    保存文档后,文件将存储到相关文档的“正文”字段中,并清理文件系统。 URL必须更改,否则附件将无法在其他副本上使用,因为只有数据库被复制,并且DAOS无法管理它。

    新网址“http://myserver/mydb.nsf/xsp/.ibmmodres/domino/OpenAttachment/belair/xbiblio.nsf/E4E384094564EE9E85257F33005953AE/Body/indifference.jpg”对应于:

    • “myserver / mydb.nsf / xsp / .ibmmodres / domino / OpenAttachment”,用于打开相关附件的简写网址。
    • “/ belair / xbiblio.nsf / E4E384094564EE9E85257F33005953AE”,附件所在文件的位置。
    • “/ Body”,字段名称。
    • “/ indifference.jpg”,附件名称(当然,该字段可以包含多个附件)。

    上述信息基于XPages Portable Command Guide(用于更改默认临时位置的xsp.properties设置)和Mastering XPages 2nd Edition中记录的内容。

    我不确定YouAtNotes上传器的作用,所以我不能说是否应该在保存时更改URL。但是在更新版本的Domino中,附件可以在没有完全刷新的情况下上传,这可以作为替代方案使用。

    当您复制文档时,如果您要存储通过其URL(包括UNID)引用图像的HTML,则需要修改这些引用。

    如果您想保留UNID,请记住它们是可读写的 - 您可以设置它们以及获取它们。但是,请记住,如果将URL更改为现有文档的相同URL,则会出现问题。请记住,这也是XPages,因此通过XPage应用程序访问的数据不必位于同一数据库中。