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