Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages X演示如何从链接打开/保存文件_Xpages - Fatal编程技术网

Xpages X演示如何从链接打开/保存文件

Xpages X演示如何从链接打开/保存文件,xpages,Xpages,单击xpage中的链接后,是否有可能打开或保存现有文件 我的场景:一个指向附件(excel文件)的链接,这样所有用户在单击该链接时都可以打开或保存该文件 我的应用程序可以在Lotus客户端和web上运行 感谢您抽出时间您需要设置正确的内容类型。对于现有文件,您需要创建自己的服务(XAgent)来修改它。或者你也可以试试看。 请记住,与内容类型关联的操作是在浏览器中配置的,因此每个用户都有自己的操作。我(根据您的评论)假设您正在寻找一种方法,将某个Excel文件存储在某个位置,并通过链接让用户访问

单击xpage中的链接后,是否有可能打开或保存现有文件

我的场景:一个指向附件(excel文件)的链接,这样所有用户在单击该链接时都可以打开或保存该文件

我的应用程序可以在Lotus客户端和web上运行


感谢您抽出时间

您需要设置正确的内容类型。对于现有文件,您需要创建自己的服务(XAgent)来修改它。或者你也可以试试看。 请记住,与内容类型关联的操作是在浏览器中配置的,因此每个用户都有自己的操作。

我(根据您的评论)假设您正在寻找一种方法,将某个Excel文件存储在某个位置,并通过链接让用户访问该文件

您可以通过以下方式实现:

  • 将Excel文件存储在数据库中的
    Resources/Files
    (例如作为“sample.xls”)

  • 在您的XPage中创建一个指向此文件的链接,仅使用名称(例如“sample.xls”)

    Excel示例文件


  • 用户可以在浏览器或XPiNC中单击链接打开或下载此文件。

    如果您只想使文件正常可用,Knut的答案是关于您想要的:将文件作为文件资源存储在数据库中,并在XPage上链接到它。不过,我想添加一个调整:在“value”属性中用“/”开始URL,例如

    
    
    这样做的原因是为了确保生成的链接始终与NSF相关,而不是与XPage相关——如果没有它,如果您使用“/someView/someDocKey”这样的链接打开XPage(而不是在表单中显示XPage),或者如果您碰巧在XPage之后包含额外的路径信息(例如“/foo.NSF/somePage.xsp/some/path/info”),则会出现问题

    但是,如果您的意思是希望使浏览器显示“保存文件”对话框,而不是其正常行为(例如,在窗口中打开Excel文件),则解决方案的核心是内容处理标题。如果将此标题设置为告诉浏览器该文件是“附件”,则浏览器将提示用户(或执行其正常文件下载例程的任何操作),而不是内联打开

    根据文件的存储方式,解决方案可能相当简单,也可能不是不可能,而是有点痛苦:

  • 如果是附加到文档的文件,我相信普通控件会生成到附件下载服务的链接,该服务通常会添加此头
  • 如果不是(例如,它是一个文件资源),那么Frantisek的建议就起作用了:您必须编写自己的shim XAgent或servlet来写入此头,然后吐出文件的内容
  • 虽然后者是可行的,但这是一种痛苦,因此我建议尽可能将您的附件整理成一个普通文档。例如,如果它附加到隐藏视图中的文档,则可以执行以下操作:

    <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>