如何以编程方式获取文件名以用于此代码?
How do I get the filename programmatically to use with this code?
下面的代码是我的自定义控件上图像控件的计算图像源。如果我 运行 它就像它一样,它会放入 photo.jpg 并且工作正常。问题是我想以编程方式传递该值。我在自定义控件上也有一个上传控件 (fileUpload1) 和一个下载控件 (fileDownload1)。我试过 document1.photo 这是存储 jpg 文件的地方。我尝试了 currentdocument.getitemvalue、getitem、getattachments 的几种变体。但是,到目前为止,我还没有找到办法做到这一点。此外,我尝试将文件名的值设置为上传控件和下载控件的值,但均未成功。
我知道这可能很简单,但是,作为客户端开发人员,这对我来说并不简单。
如有任何帮助,我们将不胜感激。
var doc:NotesDocument = currentDocument.getDocument ();
var UID:string = doc.getUniversalID().toString();
var fp:string = database.getFilePath();
var filename = "photo.jpg"
return '/0/' + UID + '/$file/' + filename
谢谢,
乔丹
可能还有其他方法可以实现这一点,但我通常这样做:
对于图像控件,我需要注意计算资源 URL 在大多数情况下都以数据库的相对路径为前缀,该路径以数据库文件名结尾。所以我只需要添加通常的文件附件 URL,如
/0/docUnid/$File/imageFileName
如果您的文档可能附加了多个文件,我需要找出我希望显示的文件。这可以通过循环
来完成
currentDocument.getAttachmentList(fieldName)
提供 java.util.List
个 NotesEmbeddedObject
个元素。使用像 .getName()
这样的方法,我就可以找到你要找的那个文件。
编辑:
使用重复显示附加到单个富文本字段的多个图像的快速示例(可能有更好的解决方案,尤其是关于过滤不需要的文件类型的方法;我使用的文件扩展名,只允许 .jpg、.png 和 .gif) .图像显示为简单的 html 列表元素:
<ul>
<xp:repeat id="repeat1" rows="30" var="pic">
<xp:this.value><![CDATA[#{javascript:
var att:java.util.List=docCar.getAttachmentList("Body");
var it=att.listIterator();
//new empty array, to be used as the repeater's datasource
var arr=[];
//build base path for each image file
var unid=docCar.getDocument().getUniversalID();
var p="/0/" + unid + "/$File/";
while(it.hasNext()){
var e:NotesEmbeddedObject=it.next();
if(e.getName().endsWithIgnoreCase(".png") ||
e.getName().endsWithIgnoreCase(".jpg") ||
e.getName().endsWithIgnoreCase(".gif")){
//push complete filepath + image filename to array
arr.push(p + e.getName());
}
}
return arr;}]]></xp:this.value>
<li>
<xp:image url="#{javascript:pic}" id="image1">
</xp:image>
</li>
</xp:repeat>
</ul>
希望对您有所帮助
好吧,我想我已经弄明白了。这是现在有效的代码:
var doc:NotesDocument = currentDocument.getDocument ();
var UID:string = doc.getUniversalID().toString(); var fp:string =
database.getFilePath();
var filename = @AttachmentNames()
return '/0/' + UID + '/$file/' + filename
MJ
下面的代码是我的自定义控件上图像控件的计算图像源。如果我 运行 它就像它一样,它会放入 photo.jpg 并且工作正常。问题是我想以编程方式传递该值。我在自定义控件上也有一个上传控件 (fileUpload1) 和一个下载控件 (fileDownload1)。我试过 document1.photo 这是存储 jpg 文件的地方。我尝试了 currentdocument.getitemvalue、getitem、getattachments 的几种变体。但是,到目前为止,我还没有找到办法做到这一点。此外,我尝试将文件名的值设置为上传控件和下载控件的值,但均未成功。
我知道这可能很简单,但是,作为客户端开发人员,这对我来说并不简单。
如有任何帮助,我们将不胜感激。
var doc:NotesDocument = currentDocument.getDocument ();
var UID:string = doc.getUniversalID().toString();
var fp:string = database.getFilePath();
var filename = "photo.jpg"
return '/0/' + UID + '/$file/' + filename
谢谢, 乔丹
可能还有其他方法可以实现这一点,但我通常这样做:
对于图像控件,我需要注意计算资源 URL 在大多数情况下都以数据库的相对路径为前缀,该路径以数据库文件名结尾。所以我只需要添加通常的文件附件 URL,如
/0/docUnid/$File/imageFileName
如果您的文档可能附加了多个文件,我需要找出我希望显示的文件。这可以通过循环
来完成currentDocument.getAttachmentList(fieldName)
提供 java.util.List
个 NotesEmbeddedObject
个元素。使用像 .getName()
这样的方法,我就可以找到你要找的那个文件。
编辑:
使用重复显示附加到单个富文本字段的多个图像的快速示例(可能有更好的解决方案,尤其是关于过滤不需要的文件类型的方法;我使用的文件扩展名,只允许 .jpg、.png 和 .gif) .图像显示为简单的 html 列表元素:
<ul>
<xp:repeat id="repeat1" rows="30" var="pic">
<xp:this.value><![CDATA[#{javascript:
var att:java.util.List=docCar.getAttachmentList("Body");
var it=att.listIterator();
//new empty array, to be used as the repeater's datasource
var arr=[];
//build base path for each image file
var unid=docCar.getDocument().getUniversalID();
var p="/0/" + unid + "/$File/";
while(it.hasNext()){
var e:NotesEmbeddedObject=it.next();
if(e.getName().endsWithIgnoreCase(".png") ||
e.getName().endsWithIgnoreCase(".jpg") ||
e.getName().endsWithIgnoreCase(".gif")){
//push complete filepath + image filename to array
arr.push(p + e.getName());
}
}
return arr;}]]></xp:this.value>
<li>
<xp:image url="#{javascript:pic}" id="image1">
</xp:image>
</li>
</xp:repeat>
</ul>
希望对您有所帮助
好吧,我想我已经弄明白了。这是现在有效的代码:
var doc:NotesDocument = currentDocument.getDocument (); var UID:string = doc.getUniversalID().toString(); var fp:string = database.getFilePath();
var filename = @AttachmentNames()
return '/0/' + UID + '/$file/' + filename
MJ