Проблема с загрузкой файлов в службе документов SAP Hana Cloud Platform

Я создал сервлет Java для доступа к хранилищу HCP. Я использовал sap.ui.unified.FileUploader для загрузки файла в вышеуказанный репозиторий. Это выдает мне следующую ошибку: 409 Конфликт, {"исключение": "ограничение","сообщение": "Отсутствует обязательное свойство: cmis:name"}.

Я использовал следующий код для отправки данных в виде формы с помощью 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: name в агрегации параметров 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>

Пожалуйста помоги.

1 ответ

Хотя я отвечаю довольно поздно, но это может быть полезно для других. Я могу решить эту проблему с помощью отложенного вызова. После установки значения параметра не загружайте сразу. Вот мой код:

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

    }
Другие вопросы по тегам