我正在使用以下脚本在露天上传文件,但它拒绝创建声明冲突。
"<?xml version='1.0' encoding='utf-8'?>n" +
"<entry xmlns='http://www.w3.org/2005/Atom' xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:alf="http://www.alfresco.org">n" +
"<title>" + fileName + "</title>n" +
"<summary>" + fileDescrption + "</summary>n" +
"<author>" + author + "</author>n" +
"<content type='" + mimeType.toString() + "'>" + encoder.encode(bytes) + "</content>n" +
"<cmisra:object>n"+
"<cmis:properties>n" +
"<cmis:propertyId propertyDefinitionId="cmis:objectTypeId">n"+
"<cmis:value>D:hs:doc</cmis:value>n"+
"</cmis:propertyId>n" +
"<cmis:propertyId propertyDefinitionId="cmis:versionable">n"+
"<cmis:value>TRUE</cmis:value>n"+
"</cmis:propertyId>n" +
"</cmis:properties>n" +
"</cmisra:object>n" +
"</entry>n";
如何使用 CMIS REST 启用版本控制。
我同意 Gagravarr 的观点,即通过使用 http://chemistry.apache.org 或其他来源提供的库之一,您将节省大量时间和挫败感。
但是,您的问题的答案是,听起来您正在尝试在与现有对象相同的文件夹中创建一个同名的新对象。露天不允许这样做,因此错误。
相反,您需要做的是更新现有对象。您正在使用 AtomPub 绑定,因此,如果您要更新内容流,则可以对内容流的 URL 执行 PUT。
相反,如果您尝试更新属性,则可以对对象的 URL 执行 PUT。
这将更改对象而不创建新版本。如果要创建新版本,则需要签出对象(将对象 POST 到签出的集合(,这将返回专用工作副本 (PWC(。然后,您可以如上所述设置内容流并更新 PWC 上的属性,然后可以执行签入。这将创建一个新版本。
请注意,如果Alfresco给你一个更改令牌,你需要在执行这些类型的更新时交回它,否则你会得到一个更新冲突异常。
如果您需要有关如何执行任何操作的详细信息,请阅读规范。如果你想要一个友好的API来做到这一点,而不是处理低级的AtomPub XML,PUT,POST和DELETE,那么获取CMIS库。