如何在 xpages 的视图中显示附件缩略图
How to display an attachment thumbnail in view in xpages
我已经搜索了答案,但没有找到我需要的答案。我在 Notes 文档中有一个附件,我想将其作为缩略图显示在视图控件中。
- 我是否只是将@AttachmentNames 放在视图列公式中?
- 如何让视图控件中的列显示缩略图?
- 我的文档中是否需要单独的缩略图 "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
我已经搜索了答案,但没有找到我需要的答案。我在 Notes 文档中有一个附件,我想将其作为缩略图显示在视图控件中。
- 我是否只是将@AttachmentNames 放在视图列公式中?
- 如何让视图控件中的列显示缩略图?
- 我的文档中是否需要单独的缩略图 "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