如何在 xpages 的视图中显示附件缩略图

How to display an attachment thumbnail in view in xpages

我已经搜索了答案,但没有找到我需要的答案。我在 Notes 文档中有一个附件,我想将其作为缩略图显示在视图控件中。

  1. 我是否只是将@AttachmentNames 放在视图列公式中?
  2. 如何让视图控件中的列显示缩略图?
  3. 我的文档中是否需要单独的缩略图 "image" 或者它可以从 Notes 文档中的附件创建一个吗?

感谢您的帮助。

我所知道的一切都是从这个博客开始的post:

http://www.wissel.net/blog/d6plinks/SHWL-86QKNM

对于子孙后代来说,这里有 2 个关键函数 (SSJS):

function getAttachmentURL(docID:java.lang.String, attachmentName:java.lang.String) {
    var base = getBaseURL();
    var middle = "/xsp/.ibmmodres/domino/OpenAttachment";
    if (base.substr(0,4) == "/xsp") {
        middle += base.substr(4);
    } else {
        middle += base;
    }
    var result = base + middle + "/" + docID + "/$File/" + attachmentName + "?Open";
    return result;
}

function getBaseURL() {
    var curURL = context.getUrl();
    var curAdr = curURL.getAddress();
    var rel = curURL.getSiteRelativeAddress(context);
    var step1 = curAdr.substr(0,curAdr.indexOf(rel));

    // Now cut off the http
    var step2 = step1.substr(step1.indexOf("//")+2);
    var result = step2.substr(step2.indexOf("/"));
    return result;

   }

您所做的基本上是创建一个老式的非 xpages - 意思是经典的多米诺 link。你想要这样的东西:

http(s)://[你的服务器]/[application.nsf]/[视图名称|0]/[UNID| ViewKey]/$File/[AttachmentName]?Open

然后 link 您可以放入 XPages 图像控件或其他内容。我不使用视图面板,但有一种方法可以在其中获取图像。您可能需要创建一个空白视图列并放入图像控件。具体忘记了。我敢肯定,它已经被写在博客上了。所以 Google 可能会有所帮助。

我会避免使用@AttachmentNames。老实说,我强烈建议避免在XPage 中使用所有@formulas。我确信有一种方法可以通过 Domino 对象模型获取 AttachmentNames。改用那个。以后对你有帮助。

至于缩略图...您可能想要一个...如果有人附上 2MB 的图像...确保浏览器可以将其呈现为您想要的任何大小...但它首先需要下载整整2MB!哎哟。所以为了速度,如果你已经有一个更好的缩略图。从理论上讲,您可以让服务器即时创建缩略图……但我曾经这样做过……如果说您想要一个包含 30 张或更多图片的页面并且每次它访问服务器,它就会变得非常丑陋非常快正在将图像缩小为缩略图。

我所做的..是我制作了一个更复杂的附件系统。我从不将图像存储在关键文档中。我将它们放在另一个具有共享密钥的数据库中。实际上我把它们放在 3 个数据库中。所以当有人上传图片时...我将其存储在 "original.nsf" 中。然后我将它的大小调整为 "large.nsf" 和 "small.nsf" 这样我就可以在需要的时候接近我需要的大小。

我还没有制作这一切的视频。但是我在 bitbucket 上确实有一个半工作项目,其中包含代码示例等。 https://bitbucket.org/leedy/filevault