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!");
}
},
希望对您有所帮助!
这似乎是一个奇怪的错误。 :)
我正在使用 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!");
}
},
希望对您有所帮助!