2017-06-13 15 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"メソッドのインターネットサンプルを見つけることができません。 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 Document Center内でファイルレコードが作成されますが、データは取得されません。送信された形式(PDF、txt、Excel、Doc、...)を持つ必要があるときに、書式なしのファイルが作成されます。

誰でもそれを行う方法を知っていますか?

よろしくお願いいたします。関心の

リンク:

CMIS標準は、Java(ないのJavascript)について http://docs.oasis-open.org/cmis/CMIS/v1.1/os/CMIS-v1.1-os.html#x1-1710002

使用例は 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'/> 

アップロードURLはネオ宛先へのURLになります。 neo.app.jsonに次の行を追加します。 controller.js

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

次のコード行を追加します。

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); 
    } 
}); 

neoクラウドでは、宛先タブで次の設定用のURLを維持します。 https://testdaasi328160trial.hanatrial.ondemand.com/TestDaaS/cmis/json/repo-id

repo-idがリポジトリキーになります。

これが問題を解決します。あなたはアップロードすることができますし、ドキュメント。

関連する問題