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