SAPUI 5 Fileuploder控制器功能getFocusDomRef有时无法正常工作

时间:2018-11-19 06:17:29

标签: javascript file-upload sapui5

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

我正在使用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);

1 个答案:

答案 0 :(得分:0)

对于此功能,我一直使用按钮来获取文件,并且使用getFocusDomRef()从来没有问题。您还应该使用FileReader()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!");
        }
    },

希望有帮助!