SAP Hana云平台文档服务中的文件上传问题

问题描述:

我已经创建了一个Java Servlet来访问HCP存储库。我已经使用sap.ui.unified.FileUploader将文件上传到上述存储库。它给我出现以下错误: 409冲突,{“exception”:“constraint”,“message”:“强制性属性丢失:cmis:name “}。SAP Hana云平台文档服务中的文件上传问题

我已经使用以下代码使用fileuploader提交数据作为一种形式:

<upload:FileUploader id="fileUploader" uplaodStart="handleUploadStart" uploadProgress="handleUploadProgress" uploadComplete="handleUploadComplete"> 
        <upload:parameters> 
         <upload:FileUploaderParameter name="cmisaction" value="createDocument"></upload:FileUploaderParameter> 
         <upload:FileUploaderParameter name="propertyId[0]" value="cmis:objectTypeId"></upload:FileUploaderParameter> 
         <upload:FileUploaderParameter name="propertyValue[0]" value="cmis:document"></upload:FileUploaderParameter> 
         <upload:FileUploaderParameter name="propertyId[1]" value="cmis:name"></upload:FileUploaderParameter> 
         <upload:FileUploaderParameter name="propertyValue[1]" id="cmisname"></upload:FileUploaderParameter> 
        </upload:parameters> 
       </upload:FileUploader> 
       <Button text="Upload File" press="handleUploadPress"/> 

和在控制器中的代码如下:

handleUploadPress: function(oEvent) { 
     debugger; 
     var oFileUploader = this.getView().byId("fileUploader"); 
     var repoid="94hjinnfsai8opwroiwlnnsa"; 
     var file = jQuery.sap.domById(oFileUploader.getId()+"-fu").files[0]; 
     this.getView().byId("cmisname").setValue(file.name); 
     oFileUploader.setUploadUrl("/destinations/destinationName/json/"+repoid+"/root"); 
     oFileUploader.setFileType("multipart/form-data"); 
     oFileUploader.upload(); 
    } 

我使用的CMIS:名称参数在fileuploader的参数集合,但有时会起作用,有时它会产生上述错误。但是,文档中提供的html5表单完美无缺。所以,我已经使用fileuploader作为一种形式。 html5代码如下:

<form action="/destinations/destinationName/json/c4hjinnfsai8opwroiwlnnsa/root" 
    enctype="multipart/form-data" method="post"> 
    <p> 
     Please specify a file:<br> <input type="file" id="filename" 
      onchange="setFilename()" name="datafile" size="40"> 
    </p> 
    <div> 
     <input type="submit" value="Upload"> 
      <input name="cmisaction" type="hidden" value="createDocument"/> 
      <input name="propertyId[0]" type="hidden" value="cmis:objectTypeId"/> 
      <input name="propertyValue[0]" type="hidden" value="cmis:document"/> 
      <input name="propertyId[1]" type="hidden" value="cmis:name"/> 
      <input name="propertyValue[1]" type="hidden" id="cmisname"/> 
    </div> 
</form> 

请大家帮忙。

虽然我的回复很晚,但可能对其他人有帮助。我能够使用延迟呼叫解决此问题。将值设置为参数后,请勿立即上传。 这是我的代码:

handleUploadPress: function(oEvent) { 
     var oFileUploader = this.getView().byId("fileUploader"); 
     if (!oFileUploader.getValue()) { 
      MessageToast.show("Choose a file first"); 
      return; 
     } 
     var cmisname = oFileUploader.getValue(); 
     oFileUploader.addParameter(new sap.ui.unified.FileUploaderParameter({ 
      name: "propertyValue[1]", 
      value: cmisname 
     })); 
     jQuery.sap.delayedCall(100, this, function() { 
      oFileUploader.upload(); 
     }); 

    }