xpages 中的 Lotus Notes 客户端 link 和浏览器 link 下载存储在服务器目录中的文件

Lotus notes client link and browser link in xpages to download file stored in server directory

我有一个 Xpage,其中有一个 link 用于下载我存储在服务器上的 ics 文件,当用户单击 link 时,用户可以下载文件名 "votes.ics"。

相应地,当从浏览器访问它时,它允许我下载文件,但同时当我想使用 link 从 LOTUS NOTES 客户端下载相同的文件时,它抛出一个error Resource file not found 表示notes客户端中的路径有问题,

说得更清楚,例如我在服务器上的文件夹名称"SMP"中有一个数据库名称"SMP_Intern.nsf",link后面的onclick脚本是

var docId = getVotingDocumentUID();
if(docId != ""){
if(@ClientType() == "Notes"){
var path_private = "server_name/SMP/SMP_Intern.nsf";
var httpUrl = path_private.split("/")[0];
var databaseUrl = (httpUrl+"!!"+path_private.split("/")[1]+"/"+path_private.split("/")[2]);
var url = "/xsp/"+databaseUrl+"/.ibmmodres/domino/OpenAttachment/"+databaseUrl+"/"+docId+"/ics_file/votes.ics";
return url;
}else{
var url = "/0/"+docId+"/$File/"+"votes"+".ics?OpenElement";
return url;
}
}else return false;

对于笔记客户端,它进入 'if' 条件并给出错误资源未找到,但是当它是浏览器时,'else' 条件工作得很好。

两个路径基本相同,但找不到错误。

任何建议都会有所帮助。

你试过@URLOpen(urlstring)从客户端打开的公式吗?

url必须是完整的urlhttp://DominoServer/DBPath/0/DocUNID/$file/filename

var url = "http://"+path_private +"/0/"+docId+"/$File/"+"votes"+".ics?OpenElement" ;

@URLOpen(url);

在这种情况下,您不需要对 Notes Client (XPiNC) 进行特殊处理。

您的 link 值

的 SSJS 代码
var url = "/0/"+docId+"/$File/"+"votes"+".ics?OpenElement";
return url;

也适用于 XPiNC,因为附件在当前数据库中:
如果当前数据库驻留在服务器上,则 URL 指向服务器上的附件。
如果当前数据库是本地副本,则 URL 指向客户端本地数据库中的附件。