点击xpage中的链接后,我是否有可能打开或保存现有文件?
我的场景:指向附件(excel文件)的链接,以便所有用户在点击链接时,都可以打开或保存文件。
我的应用程序适用于Lotus Client和Web。
感谢您的时间
答案 0 :(得分:1)
我假设(根据您的评论)您正在寻找一种方法在某处存储某个特定的Excel文件,并允许用户通过链接访问此文件。
你可以这样做:
将您的Excel文件存储在Resources / Files
的数据库中(例如" sample.xls")
在XPage中创建一个指向该文件的链接,只需输入名称(例如" sample.xls")
<xp:link escape="true" value="sample.xls">Excel sample file</xp:link>
用户可以在浏览器或XPiNC中点击链接打开或下载此文件。
答案 1 :(得分:0)
您需要设置正确的内容类型。对于现有文件,您需要创建自己的服务(XAgent)来更改它。或者你可以尝试set it for the link。 请记住,与内容类型相关联的操作是在浏览器中配置的 - 因此每个用户都拥有它。
答案 2 :(得分:0)
如果您只想使文件正常可用,Knut的答案就是您想要的:将文件存储为数据库中的文件资源并链接到XPage上。我会添加一个调整:在“value”属性中使用“/”启动URL,例如
<xp:link value="/sample.xls" text="Excel sample file"/>
这样做的原因是为了确保生成的链接始终相对于NSF,而不是XPage - 没有它,如果用“/ someView / someDocKey”之类的链接打开XPage,则会出现问题(使用display-XPage - 而不是在表单中)或者如果你碰巧在XPage之后包含额外的路径信息(例如“/foo.nsf/somePage.xsp/some/path/info”)。
但是如果你的意思是你想让浏览器显示“保存文件”对话框而不是其正常行为(例如IE在窗口中打开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>