2013-09-27 87 views
0

我正在使用下面的腳本在露天上傳文件,但它拒絕創建陳述衝突。加載具有相同名稱的文件時出錯

 "<?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休息的版本控制。

+1

您沒有顯示您正在調用哪個REST端點,您使用的HTTP方法是否可以提供更多詳細信息? – skuro

+0

您是否有理由試圖編寫您自己的CMIS客戶端進行上傳,而不是簡單地使用現有(+測試過!)的CMIS庫中的一個? – Gagravarr

回答

1

我同意Gagravarr的說法,即使用http://chemistry.apache.org或某些其他來源可用的庫之一,您將節省很多時間和挫敗感。

但是,您的問題的答案是,它聽起來像你正試圖創建一個與現有對象相同的文件夾中具有相同名稱的新對象。 Alfresco不允許這樣做,因此錯誤。

相反,你需要做的是更新現有的對象。您正在使用AtomPub綁定,因此如果您想要更新內容流,您可以對內容流的URL執行PUT操作。

如果您試圖更新屬性,則可以在對象的URL上執行PUT。

這將更改對象而不創建新版本。如果您不想創建新版本,則需要檢出該對象(將對象POST到簽出的集合),該對象將返回私人工作副本(PWC)。然後,您可以設置內容流並如上所述更新PWC上的屬性,然後您可以進行簽入。這將創建一個新版本。

請注意,如果Alfresco爲您提供更改令牌,則需要在執行這些更新時將其交回,否則您將收到更新衝突異常。

如果您需要具體的操作方法,請閱讀規範。如果你想要一個友好的API來完成這個工作,而不是處理低級別的AtomPub XML,PUT,POST和DELETE,那麼就去抓一個CMIS庫。

相關問題