我正在尝试实现一个sap.ui.unified.FileUploader但是,当使用change函数时,事件(e)中的参数是未定义的。最奇怪的是我在JS fidler上有一个例子,它可以在那里工作,但不在我的页面上。 这是代码:
var f = new sap.ui.unified.FileUploader({
uploadUrl : "",
buttonText : "Upload",
fileType : "csv",
maximumFileSize : 1,
icon : "sap-icon://upload",
change : function(e){
console.log("aqui");
var file = e.getParameter("files") && e.getParameter("files")[0];
console.log(file);
if (file && window.FileReader){
var reader = new FileReader();
var that = this;
reader.onload = function(evn) {
var strCSV= evn.target.result; //string in CSV
alert(strCSV);
};
reader.readAsText(file);
}
}
});
文件var在我的页面上变为未定义。 有什么想法吗? 谢谢!
更新:当我尝试从事件e获取getParameters方法时,我只获取id和名称,并且在fidler中我获取了id,名称和文件......下面是fidler链接{ {3}}
答案 0 :(得分:1)
你可以这样做:
在视图文件中:
new sap.ui.unified.FileUploader({
uploadUrl : "serviceURL",
name: "simpleUploader",
uploadOnChange: false,
sendXHR: true,
useMultipart: false,
})
与按钮结合使用:
new sap.m.Button({
text : "{i18n>UPLOAD}",
icon : "sap-icon://upload",
type : sap.m.ButtonType.Accept,
press : [ oController.onStartUpload, oController ]
})
在相应的控制器文件中:
onStartUpload : function(oEvent) {
var oFileUploader = // TODO get the file uploader
var sFile = oFileUploader.getValue();
if (sFile==="") {
// TODO no file selected
return;
}
oFileUploader.destroyHeaderParameters();
that.getModel("modelName").refreshSecurityToken();
oFileUploader.insertHeaderParameter(new sap.ui.unified.FileUploaderParameter({name: "x-csrf-token", value: that.getModel("modelName").getHeaders()['x-csrf-token'] }));
oFileUploader.insertHeaderParameter(new sap.ui.unified.FileUploaderParameter({name: "slug", value: oFileUploader.getValue() }));
oFileUploader.upload();
},