odata - unable to upload files using UploadCollection in SAPUI5 -


i receiving 403 forbidden error when try upload file using uploadcollection. code in view.js is:

      var ooupload = new sap.m.uploadcollection("oinspupload",{         multiple : true,         samefilenameallowed : true,         instantupload : false,         uploadurl :  "/sap/opu/odata/sap/zaccbill_srv/fileset", /*      uploadcomplete : function(oevent){             //alert ("file uploaded successfully");         //  ocontroller.fileupload(oevent);         }, */         filedeleted : function(oevent){             ocontroller.filedelete(oevent);         },         filerenamed : function(oevent){             alert ("file renamed successfully");             //ocontroller.filerename(oevent);         }     });  

the code in view.controller is:

         odata.request({                 requesturi : sserviceurl,                 method : "get",                 headers :                  {                     "x-requested-with" : "xmlhttprequest",                     "content-type" : "application/atom+xml",                     "dataserviceversion" : "2.0",                     "authorization" : authtoken,                     "x-csrf-token" : "fetch"                 }              },             function(data, response) {                 debugger;                 if(sap.ui.device.browser.chrome || sap.ui.device.browser.msie || sap.ui.device.browser.safari){                     header_xcsrf_token = response.headers['x-csrf-token'];                 }else if(sap.ui.device.browser.firefox){                     header_xcsrf_token = response.headers['x-csrf-token'];                  }                 xcsrf_token_ref.header_xcsrf_token = header_xcsrf_token;                 csrftoken = xcsrf_token_ref.header_xcsrf_token;              debugger;             uploadattachments(xcsrf_token_ref);             },             function(err) {                 debugger;                 var request = err.request; // request sent.                  var response = err.response; // response received.                  alert("error in -- request "                         + request + " response "                         + response);             });     function uploadattachments(token){ debugger;     var uploader;                    uploader= sap.ui.getcore().byid("oinspupload");            var aitems = uploader.getitems();           var slug, sequence;           (i = 0; < aitems.length; i++) {              sequence =  + 1;             slug = "containerid1000040100;statusib;sequence" + sequence+          ";filenamecamera.png" ;     uploader.addheaderparameter(new sap.m.uploadcollectionparameter({name: "slug", value: slug }));       debugger;     uploader.addheaderparameter(new sap.m.uploadcollectionparameter({name: "x-csrf-token", value: token.header_xcsrf_token }));      uploader.upload(); } } 

please don't mind missing parenthesis code above not complete code.

the above code works fine fileuploader. sure issue uploadcollection not passing fetched csrf token unable figure out what's wrong.

finally found solution myself of following blog http://scn.sap.com/community/developer-center/front-end/blog/2016/03/29/using-the-uploadcollection-to-uploaddownload-archivelink-files-via-gateway

upload collection works instantupload true , not work instantupload false of version 1.32.x. uploadcollection buggy , yet rectified in future versions. csrf token validation needs done in change event. below code:

view.js

    var ooupload = new sap.m.uploadcollection("oinspupload",{         multiple : true,         samefilenameallowed : false,         instantupload : true,         uploadurl :  "/sap/opu/odata/sap/zaccbill_srv/fileset",         filedeleted : function(oevent){             ocontroller.filedelete(oevent);         },         filerenamed : function(oevent){             alert ("file renamed successfully");         },         change: function(oevent) {               debugger;             csrftoken = xcsrf_token_ref.header_xcsrf_token;              var ouploadcollection = oevent.getsource();               var ocustomerheadertoken = new sap.m.uploadcollectionparameter({                   name : "x-csrf-token",                   value :  csrftoken               });               ouploadcollection.addheaderparameter(ocustomerheadertoken);         },      });  

Comments