Xpages X演示如何从链接打开/保存文件
单击xpage中的链接后,是否有可能打开或保存现有文件 我的场景:一个指向附件(excel文件)的链接,这样所有用户在单击该链接时都可以打开或保存该文件 我的应用程序可以在Lotus客户端和web上运行Xpages X演示如何从链接打开/保存文件,xpages,Xpages,单击xpage中的链接后,是否有可能打开或保存现有文件 我的场景:一个指向附件(excel文件)的链接,这样所有用户在单击该链接时都可以打开或保存该文件 我的应用程序可以在Lotus客户端和web上运行 感谢您抽出时间您需要设置正确的内容类型。对于现有文件,您需要创建自己的服务(XAgent)来修改它。或者你也可以试试看。 请记住,与内容类型关联的操作是在浏览器中配置的,因此每个用户都有自己的操作。我(根据您的评论)假设您正在寻找一种方法,将某个Excel文件存储在某个位置,并通过链接让用户访问
感谢您抽出时间您需要设置正确的内容类型。对于现有文件,您需要创建自己的服务(XAgent)来修改它。或者你也可以试试看。 请记住,与内容类型关联的操作是在浏览器中配置的,因此每个用户都有自己的操作。我(根据您的评论)假设您正在寻找一种方法,将某个Excel文件存储在某个位置,并通过链接让用户访问该文件 您可以通过以下方式实现:
Resources/Files
(例如作为“sample.xls”)Excel示例文件
用户可以在浏览器或XPiNC中单击链接打开或下载此文件。如果您只想使文件正常可用,Knut的答案是关于您想要的:将文件作为文件资源存储在数据库中,并在XPage上链接到它。不过,我想添加一个调整:在“value”属性中用“/”开始URL,例如
这样做的原因是为了确保生成的链接始终与NSF相关,而不是与XPage相关——如果没有它,如果您使用“/someView/someDocKey”这样的链接打开XPage(而不是在表单中显示XPage),或者如果您碰巧在XPage之后包含额外的路径信息(例如“/foo.NSF/somePage.xsp/some/path/info”),则会出现问题
但是,如果您的意思是希望使浏览器显示“保存文件”对话框,而不是其正常行为(例如,在窗口中打开Excel文件),则解决方案的核心是内容处理标题。如果将此标题设置为告诉浏览器该文件是“附件”,则浏览器将提示用户(或执行其正常文件下载例程的任何操作),而不是内联打开
根据文件的存储方式,解决方案可能相当简单,也可能不是不可能,而是有点痛苦:
<xp:panel>
<xp:this.data>
<xp:dominoDocument var="attachmentDoc" action="openDocument" ignoreRequestParams="true">
<xp:this.documentId><![CDATA[${javascript:
database.getView("SomeLookupView").getFirstEntry().getUniversalID()
}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>
<xp:fileDownload value="#{attachmentDoc.Body}"/>
</xp:panel>
我编辑了我的问题,使其更清晰。我也看了,但我不知道如何修改我的场景,如何将文件附加到富文本当你说“打开/保存”时,你的意思是:打开,编辑,然后保存回同一位置吗?只需访问文件:打开它,如果用户可以打开文件,他们当然可以从文件属性中保存它。在clasic注释中,我以以下方式创建了它:从大纲中,一个大纲条目将您重定向到一个页面,该页面将此文件作为页面上的附件。然后用户可以通过“双击”打开它。所以我的文章的哪一部分不清楚。它描述了如何创建指向附件的链接。单击此类链接时,浏览器将处理文件,并根据配置自动打开或提供保存/下载。什么对你不起作用?你能给我一个通过XAgent修改文件的代码示例吗?此外,该文件必须作为资源导入到.nsf中?最初,由于文件名的原因,它无法工作:名称中有空格。。。现在我改变了它的名字,它开始工作了。非常感谢。
<xp:panel>
<xp:this.data>
<xp:dominoDocument var="attachmentDoc" action="openDocument" ignoreRequestParams="true">
<xp:this.documentId><![CDATA[${javascript:
database.getView("SomeLookupView").getFirstEntry().getUniversalID()
}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>
<xp:fileDownload value="#{attachmentDoc.Body}"/>
</xp:panel>