SAPUI 5 fileuploder 控制器函数 getFocusDomRef 有时不工作

SAPUI 5 fileuploder controller function getFocusDomRef not working sometime

这似乎是一个奇怪的错误。 :)

我正在使用 SAPIU5 fileuploder 控制器,它似乎工作正常。但有时函数 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);

对于此功能,我一直使用按钮来获取文件,使用 getFocusDomRef() 从未遇到过问题。您还应该使用 FileReader() to read the content of the files asynchronously with FileReader.readAsText() 下载真正完成后。

使用包含触发加载事件时执行的事件处理程序的 FileReader.onload 属性。

使用 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!");
        }
    },

希望对您有所帮助!