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
Post a Comment