Lotus notes客户机链接和xpages中的浏览器链接用于下载存储在服务器目录中的文件

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

本文关键字:链接 存储 文件 下载 服务器 浏览器 客户机 notes xpages Lotus 用于      更新时间:2023-09-26

我有一个Xpage,里面有一个链接可以下载我存储在服务器上的ics文件,当用户点击这个链接时,用户就可以下载文件名"votes.ics"。

因此,当它从浏览器访问时,它允许我下载文件,但同时,当我想从LOTUS NOTES客户端使用链接下载相同的文件时,它抛出错误资源文件未找到,这意味着NOTES客户端的路径有问题,

为了更清楚,例如,我有一个数据库名称"SMP_Intern"。在服务器上文件夹名为"SMP"中的nsf",链接后面的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;

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

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

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

链接值的SSJS代码

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

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

您是否尝试过从客户端打开的@URLOpen(urlstring)公式?

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

var url = " http://" + path_private +"/0/+ docId +"/文件/美元"+"选票"+"mab ' ? OpenElement";

@URLOpen(url);