2017-06-13 69 views
0

我正嘗試在使用Javascript的HCP的SAP文檔中心中創建文檔,但我不能。 SAP Document Center使用CMIS協議與其他應用程序通信。我已經能夠從SAPUI5應用程序與SAP Document Center進行連接。我也成功創建了一個文件夾,如下所示:在Javascript中使用CMIS創建文檔

createFolder: function(repositoryId, parentFolderId, folderName) { 
     var data = { 
      objectId: parentFolderId, 
      cmisaction: "createFolder", 
      "propertyId[0]": "cmis:name", 
      "propertyValue[0]": folderName, 
      "propertyId[1]": "cmis:objectTypeId", 
      "propertyValue[1]": "cmis:folder" 
     }; 

     $.ajax("/destination/document/mcm/json/" + repositoryId + "/root", { 
      type: "POST", 
      data: data 
     }).done(function() { 
      MessageBox.show("Folder with name " + folderName + " successfully created."); 
     }).fail(function(jqXHR) { 
      MessageBox.show("Creation of folder with name " + folderName + " failed. XHR response message: " + jqXHR.responseJSON.message); 
     }); 
    }, 

但是,我發現無法創建文檔。我找不到CMIS「createDocument」方法的Internet樣本。 Java有很多例子,但與Javascript無關。我不知道要發送的數據結構如何。代碼如下:

createDocument: function(repositoryId, parentFolderId, documentName, content) { 
      /** 
      * 'content' contains the whole document converted to a base64 string like this: 
      * "data:application/pdf;base64,JVBERi0xLjUNJeLjz9MNCjIxNCAwIG9iag08P..." 
      */ 
      var data = { 
       objectId: parentFolderId, 
       cmisaction: "createDocument", 
       contentStream: content, 
       "propertyId[0]": "cmis:name", 
       "propertyValue[0]": documentName, 
       "propertyId[1]": "cmis:objectTypeId", 
       "propertyValue[1]": "cmis:document" 
      }; 

      $.ajax("/destination/document/mcm/json/" + repositoryId + "/root", { 
       type: "POST", 
       data: data 
      }).done(function() { 
       MessageBox.show("Document with name " + documentName + " successfully created."); 
      }).fail(function(jqXHR) { 
       MessageBox.show("Creation of document with name " + documentName + " failed. XHR response message: " + jqXHR.responseJSON.message); 
      }); 
     }, 

有了這個,我創建SAP文檔中心內的文件記錄,但它並不需要的數據。創建一個未格式化的文件,它應該有格式發送(PDF,txt,Excel,Doc,...)。

有誰知道該怎麼做?

問候。

鏈接的興趣:

CMIS標準 http://docs.oasis-open.org/cmis/CMIS/v1.1/os/CMIS-v1.1-os.html#x1-1710002

的Java(不是JavaScript)的使用示例 http://chemistry.apache.org/java/developing/guide.html

+0

您是否嘗試將內容類型設置爲'multipart/form-data'? – danpop

回答

0

我經歷過類似的問題。我的解決方案是將其從base64更改爲FormData方法,所以我獲得了文件輸入值而不是內容base64字符串。它運行良好。

this.createObject = function (fileInput, objectName,folderId, cbOk, cbError) { 

     if (!folderId) { 
      folderId = _this.metadata.rootFolderId; 
     } 

     var documentData = { 
      'propertyId[1]': 'cmis:objectTypeId', 
      'propertyValue[1]': 'cmis:document', 
      'propertyId[0]': 'cmis:name', 
      'propertyValue[0]': objectName, 
      'objectId': folderId, 
      'cmisaction': 'createDocument', 
      'content' : fileInput 
     }; 

     var formData = new FormData(); 

     jQuery.each(documentData, function(key, value){ 
      formData.append(key, value); 
     }); 


     $.ajax({ 
      url: _this.metadata.actionsUrl, 
      data: formData, 
      cache: false, 
      contentType: false, 
      processData: false, 
      type: 'POST', 
      success: function(data){ 
       cbOk(data); 
      }, 
      error: function(err){ 
       cbError(err); 
      } 
     }); 
    }; 
0

在view.xml中添加以下幾行。

<FileUploader id="fileUploader" 
       name="myFileUpload" 
       uploadUrl="/cmis/root" 
       width="400px" 
       tooltip="Upload your file to the local server" 
       uploadComplete="handleUploadComplete" 
       change='onChangeDoc'/> 

上傳網址將成爲neo目的地的網址。在neo.app.json中添加以下幾行。

{ 
    "path": "/cmis", 
    "target": { 
     "type": "destination", 
     "name": "documentservice" 
    }, 
    "description": "documentservice" 
} 

controller.js添加下面的代碼行。

if (!oFileUploader.getValue()) { 
    sap.m.MessageToast.show("Choose a file first"); 
    return; 
} 

var data = { 
    'propertyId[0]': 'cmis:objectTypeId', 
    'propertyValue[0]': 'cmis:document', 
    'propertyId[1]': 'cmis:name', 
    'propertyValue[1]': file.name, 
    'cmisaction': 'createDocument' 
}; 

var formData = new FormData(); 
formData.append('datafile', new Blob([file])); 
jQuery.each(data, function(key, value) { 
    formData.append(key, value); 
}); 

$.ajax('/cmis/root', { 
    type: 'POST', 
    data: formData, 
    cache: false, 
    processData: false, 
    contentType: false, 
    success: function(response) { 
     sap.m.MessageToast.show("File Uploaded Successfully");    
    }.bind(this), 
    error: function(error) { 
     sap.m.MessageBox.error("File Uploaded Unsuccessfully. Save is not possible. " + error.responseJSON.message); 
    } 
}); 

在新雲,保持在目的地選項卡以下配置的URL。 https://testdaasi328160trial.hanatrial.ondemand.com/TestDaaS/cmis/json/repo-id

repo-id將成爲您的存儲庫密鑰。

這會解決問題。您將可以上傳文件。

相關問題