Функция контроллера файлового загрузчика SAPUI 5 getFocusDomRef иногда не работает - PullRequest
0 голосов
/ 19 ноября 2018

Это кажется странной ошибкой.:)

Я использую контроллер файлового загрузчика SAPIU5, похоже, он работает нормально.Но иногда функция getFocusDomRef не может извлечь параметры.

Еще одно странное поведение заключается в том, что он работает в Mac (chrome) без каких-либо проблем, но в Windows (chrome) иногда происходит сбой.

Использование Chrome Версия 70.0.3538.102

Ниже приведен фрагмент кода:

 <u:FileUploader id="fileUploader" name="myFileUpload" fileType="csv" uploadComplete="handleUploadComplete" typeMissmatch="checkTypeMissmatch" fileAllowed="fileTypeAllowed" />

Контроллер:

handleUploadComplete() =>
     var loFileUploader = sap.ui.getCore().byId("fileUploader");
            loFileUploader.setValueState(sap.ui.core.ValueState.None);
            var Title = sap.ui.getCore().byId("importCollectionTitle").getValue();

            var domRefFile = loFileUploader.getFocusDomRef(); //The Buggy boy

            var file = domRefFile.files[0];
            var reader = new FileReader();

            reader.onload = function(evt) {

            var postXMLUploadFile = evt.target.result.trim().replace(/\r/g, "");
            var rows = postXMLUploadFile.split("\n");

           //Import CSV file data

        };
        reader.readAsText(file);

1 Ответ

0 голосов
/ 19 ноября 2018

Для этой функции я всегда использовал кнопку для получения файлов, и использование getFocusDomRef() никогда не вызывало проблем. Вам также следует использовать FileReader() для асинхронного чтения содержимого файлов с FileReader.readAsText() после завершения загрузки.

Используйте свойство FileReader.onload, которое содержит обработчик событий, выполняемый при запуске события load.

Использование кнопки в представлении XML:

<u:FileUploader id="idfileUploader" sameFilenameAllowed="false" buttonText="" fileType="CSV" placeholder="Choose a CSV file"/>
<Button text="Upload" press="onUpload" id="__uploadButton" tooltip="Upload CSV File"/>

В контроллере:

    onUpload: function() {
        //get file from uploader
        var domRef = this.getView().byId("idfileUploader").getFocusDomRef();
        var oFile = domRef.files[0];
        if (oFile && window.FileReader) {
            var reader = new FileReader();
            //onload function
            reader.onload = function(evt) {
                //file string
                var strCSV = evt.target.result;
            };
            reader.readAsText(oFile);
        } else {
            //File Reader not supported
            alert("Please Upload a CSV File!");
        }
    },

Надеюсь, это поможет!

...