javascript - Download excel file from Asp Net Web Api using Angular 1.X -
i attempting download excel file using angular 1.x when try open file corrupted. here code
backend using asp.net web api , report viewer
public httpresponsemessage usertestreport() { return _reporthandler.saveuserexcel(); } public httpresponsemessage saveuserexcel() { var reportname = "test.rdlc"; var reportdatasource = new reportdatasource("testdataset", getusers()); byte[] bytes; using (var reportviewer = new reportviewer()) { reportviewer.localreport.reportpath = httpcontext.current.server.mappath("~/reporting/test/" + reportname); //datasource reportviewer.localreport.datasources.add(reportdatasource); var tt = reportviewer.localreport.listrenderingextensions(); warning[] warnings; string[] streamids; string mimetype; string encoding; string extension; string filename; bytes = reportviewer.localreport.render( "excelopenxml", null, out mimetype, out encoding, out extension, out streamids, out warnings); var result = new httpresponsemessage(httpstatuscode.ok); var stream = new memorystream(bytes); result.content = new bytearraycontent(stream.toarray()); result.content.headers.contenttype = new mediatypeheadervalue(mimetype); result.content.headers.contentlength = bytes.length; return result; } it seems backend code correct because tested using postman (send , download) , worked properly.
frontend code using angular 1.x
var download = function (url, defaultfilename) { url = 'http://localhost:61123/api/user/usertestreport'; defaultfilename = 'exceltest'; var deferred = $q.defer(); $http.post(url, { responsetype: "arraybuffer" }).then( function (data, status, headers) { debugger; var blob = new blob([data.data], { type: data.headers('content-type') }); filesaver.saveas(blob, defaultfilename + '.xlsx'); } i've tried different ways result same. (file corrupted). if change format on backend ('excelopenxml' 'pdf' ) , changes on client side works fine. think problem on excel format , client side. if knows how postman "send , download" great!
please advise me
Comments
Post a Comment