【问题标题】:CMIS default url for a document?CMIS 文档的默认 url?
【发布时间】:2014-04-22 04:01:08
【问题描述】:

Google 和 Box 等云存储服务为所有文件提供了一个可共享的 url 端点。像http://drive.google.com/my-object-id 这样的东西。

在大多数服务器实现中是否有默认的 cmis 值来获取这种 url?如果不是,这个 Alfresco 的属性名称是什么?

【问题讨论】:

    标签: alfresco apache-chemistry


    【解决方案1】:

    CMIS 是企业内容管理 (ECM) 存储库的行业标准。 Alfresco 符合 CMIS 1.0 和 CMIS 1.1。 CMIS 1.0 支持两种绑定,一种在 SOAP 上,另一种在 Atom Publishing Protocol 上。在 CMIS 1.1 中添加了一个新的“绑定”,称为浏览器绑定。

    问题的答案取决于您使用的绑定。

    浏览器绑定

    使用浏览器绑定,您发布 HTML 表单以创建新对象,当您发出 GET 时,您会返回 JSON。

    在 CMIS 1.0 中,URL 结构完全依赖于底层存储库。使用 CMIS 1.1 浏览器绑定,URL 结构由规范规定。

    例如,在 Alfresco 4.2.x 中,CMIS 1.1 浏览器绑定的“服务 URL”为:

    http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser
    

    以下所有内容均基于规范。因此,如果我想返回列出位于“/test”下的文件夹中的对象的 JSON,我会这样做:

    http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/test
    

    而且,对于您最初的问题,如果我想要一个对象并且我知道它的对象 ID,我可以使用:

    http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root?objectId=f5681ba1-a4da-4183-82be-8f1869d7310d;3.0
    

    返回对象本身,或者:

    http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root?objectId=f5681ba1-a4da-4183-82be-8f1869d7310d;3.0&cmisselector=object
    

    如果你想要关于对象的元数据。

    所以,当您使用 CMIS 浏览器绑定时,您不需要一个属性来告诉您对象的 URL,您只需要服务 URL 和对象的对象 ID。

    AtomPub 绑定

    如果您使用的是 AtomPub 绑定,则 URL 结构不是由规范定义的,而是由存储库定义的。因此,当您使用 Atom Pub 绑定时,没有标准方法可以通过不同 CMIS 服务器上的 URL 检索内容。

    但是,给定内容的“内容 URL”作为该内容的 Atom 条目的一部分返回。您可以在 atom:content 元素的 src 属性中找到它。

    例如,使用 curl 或针对 Alfresco 4.2.f 运行的类似方法,我可以使用其 ID 获取一段内容的 atom 条目,如下所示:

    http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom/entry?id=f5681ba1-a4da-4183-82be-8f1869d7310d%3B3.0
    

    查看返回的 XML,我看到了:

    <atom:content src="http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom/content/test.txt?id=f5681ba1-a4da-4183-82be-8f1869d7310d%3B3.0" type="text/plain"/>
    

    所以我可以直接去这个网址检索内容。

    因此,如果您可以获取 Atom 响应,您就可以获取该值并获得您的 URL。但是,请注意,如果最终用户调用此 URL,则会提示他们输入 Alfresco 凭据而不是基本身份验证。如果这对您不起作用,您将不得不编写一个代理来获取内容并将其流式传输回给用户。

    【讨论】:

    • 谢谢。我在化学中有会话对象(在我的情况下是 DotCMIS),我通过 GetObjectByPath 或 GetObject 获得了一个 ICmisObject,它是 id。有获取创建日期、上次修改时间等的方法,但没有获取下载 url/共享 url 的方法。
    • 我根据您正在使用 DotCMIS 的启示更新了我的答案。您没有具体说明您使用的是哪种绑定,但我假设您使用的是 AtomPub 绑定。
    • 有什么方法可以在 openCMIS 中获取该 URL? (工作台显示了,所以我想一定有办法?)
    • 开源 FTW `private String getDocumentURL(final CmisObject document, final Session session) { if (!(document instanceof Document)) { return null; } if (session.getBinding().getObjectService() instanceof LinkAccess) { return ((LinkAccess) session.getBinding().getObjectService()).loadContentLink(session.getRepositoryInfo() .getId(), document.getId()) ; } 返回空值; } `
    【解决方案2】:

    如果你去: Alfresco CMIS

    用户=管理员和密码=管理员

    您将能够看到(例如根集合)文件列表及其相关的可共享 URL。 CMIS 界面在您本地的 Alfresco 实例中也可用,因此您应该可以在那里检查它。 希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2011-01-01
      • 1970-01-01
      • 2021-04-27
      相关资源
      最近更新 更多