2017-06-13 71 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将成为您的存储库密钥。

这会解决问题。您将可以上传文件。

相关问题