SAPUI5 - 带有未定义参数的文件上传器

时间:2015-11-16 17:03:41

标签: file-upload sapui5

我正在尝试实现一个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}}

1 个答案:

答案 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();     
},