2017-10-06 147 views
0

我有Presentation Web Scriptscript A)和Data Web Scriptscript B)。是否可以使用OpenCMIS API在Alfresco網站上創建文件夾?

script A我構建與script B交互的對話框。

enter image description here

我在這裏形成一些路徑,其中一些文件將被上傳(groupyearnumber參數定義此路徑):

... 
var submitHandler = function() { 
    var dataWebScriptUrl = window.location.protocol + '//' + 
     window.location.host + "/alfresco/s/ms-ws/script-b?guest=true"; 

    var yearCombo = document.getElementById("year"); 
    var year = yearCombo.options[yearCombo.selectedIndex].value; 

    var groupCombo = document.getElementById("group"); 
    var group = groupCombo.options[groupCombo.selectedIndex].value; 

    var numberCombo = document.getElementById("number"); 
    var number = numberCombo.value; 

    var uploadedFile = document.getElementById("uploadedFile"); 
    var file = uploadedFile.files[0]; 

    var formData = new FormData(); 
    formData.append("year", year); 
    formData.append("group", group); 
    formData.append("number", number); 
    formData.append("uploadedFile", file);  

    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", dataWebScriptUrl); 
    xhr.send(formData); 
}; 
... 

script B,我使用的是Apache Chemistry OpenCMIS API在與CMIS兼容的Alfresco存儲庫中創建路徑:

public class CustomFileUploader extends DeclarativeWebScript implements OpenCmisConfig { 
    ... 
    private void retrievePostRequestParams(WebScriptRequest req) { 
     String groupName = null, year = null, number = null; 

     FormData formData = (FormData) req.parseContent(); 
     FormData.FormField[] fields = formData.getFields(); 
     for(FormData.FormField field : fields) { 
      String fieldName = field.getName(); 
      String fieldValue = field.getValue(); 

      if(fieldName.equalsIgnoreCase("group")) { 
       if(fieldValue.equalsIgnoreCase("services")) { 
        groupName = "Услуги"; 
       ...       
     } 

     firstLevelFolderName = "/" + groupName; 
     secondLevelFolderName = groupName + " " + year; 
     thirdLevelFolderName = number; 
    } 

    ... 

    Folder firstLevelFolder = 
       createFolderIfNotExists(cmisSession, docLibFolder, firstLevelFolderName); 

    ... 

    private Folder createFolderIfNotExists(Session cmisSession, 
      Folder parentFolder, String folderName) { 
     Folder subFolder = null; 
     for(CmisObject child : parentFolder.getChildren()) { 
      if(folderName.equalsIgnoreCase(child.getName())) { 
       subFolder = (Folder) child; 
      } 
     } 

     if(subFolder == null) { 
      Map<String, Object> props = new HashMap<>(); 
      props.put("cmis:objectTypeId", "cmis:folder"); 
      props.put("cmis:name", folderName); 

      subFolder = parentFolder.createFolder(props); 
     } 
     return subFolder; 
    } 

    private Folder getDocLibFolder(Session cmisSession, String siteName) { 
     String path = "/Sites/" + siteName + "/documentLibrary"; 
     return (Folder) cmisSession.getObjectByPath(path); 
    } 

    private Session getCmisSession() { 
     SessionFactory factory = SessionFactoryImpl.newInstance(); 
     Map<String, String> conf = new HashMap<>(); 

     // http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom 
     conf.put(SessionParameter.ATOMPUB_URL, ATOMPUB_URL); 
     conf.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); 
     conf.put(SessionParameter.USER, USER_NAME); 
     conf.put(SessionParameter.PASSWORD, PASSWORD); 

     // "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl" 
     conf.put(SessionParameter.OBJECT_FACTORY_CLASS, OBJECT_FACTORY_CLASS); 
     conf.put(SessionParameter.REPOSITORY_ID, "-default-"); 

     Session session = factory.createSession(conf); 

     return session; 
    } 

    ... 

這一切都很好...但我需要在特定的網站上創建目錄結構,例如「合同現場」,在這裏:

/site/contracts-site/documentlibrary 

當我指定了以下內容:

/Sites/contracts-site/documentLibrary/Услуги 
/Sites/contracts-site/Услуги 
/site/contracts-site/documentlibrary/Услуги 

我得到下面的異常(取決於路徑上):

org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found: /Sites/contracts-site/Услуги 

當我指定如下:

"/Услуги" 

一切正常,但目錄結構在網站外創建...

如何使用OpenCMIS API在Alfresco網站上創建文件夾?

我將非常感激這些信息。謝謝大家。

感謝所有。

回答

1

只是偶然找到了解決辦法。完美的作品,如果指定以下路徑:"Сайты"代替"Sites" ...(西裏爾字母)

我使用ru_RU區域和UTF-8編碼

// locate the document library 
String path = "/Сайты/contracts-site/documentLibrary"; 

也就是說,。然後this example也適用。

+0

這是一個棘手的問題。我會記住這種行爲。 – Akah

2

你不知道/company_home/

這將導致

/company_home/Sites/contracts-site/documentLibrary/Услуги 
+0

非常感謝您的回答!我現在就試試吧,讓你知道... –

+0

不,它沒有幫助。例外情況相同:'org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException:找不到對象:/ company_home/Sites/contracts-site/documentLibrary /Услуги'AFAIK'company_home'的路徑是''/「 '... –

+0

對不起,沒有用。 – Akah

相關問題