ravi sharma

ravi sharma

  • 1.7k
  • 84
  • 5.6k

Unable to store server side response file

Aug 3 2018 9:00 AM
Hi,
 
I need to generate and download pdf file on server in node js. I have created api for that. When i directly call api in browser, it works fine and download file but when I call file from axios post, it of my client side code, it is not downloding file. Following is my code. Please suggest.
  1. app.get("/getpdf/*"function (req, res) {  
  2. var query = "SELECT UserId,UserName,Password,UserType,Mobile,Status,Password1,Password2,Password3,replace(CONVERT(VARCHAR(10), DateCreated, 103),'01/01/1900','-') FROM AppUsers";  
  3. var fields = "User Id,Username,Password,Usertype,Mobile,Status,Password1,Password2,Password2,Created Date";  
  4. //GetPDF(res, query, fields);  
  5. GetCSV(res, query);  
  6. });  
  7. function GetPDF(res, qry, fields) {  
  8. var request = new sql.Request();  
  9. // query to the database and get the records  
  10. request.query(qry, function (err, result) {  
  11. if (err) {  
  12. console.log(err);  
  13. res.send(err);  
  14. }  
  15. else {  
  16. let rdata = result.recordsets[0];  
  17. var ShowLabel = true;  
  18. var JSONData = result.recordsets[0];  
  19. var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;  
  20. var number_of_rows = rdata.length;  
  21. var table_body = '<html><head>';  
  22. table_body += '<style>table {border-collapse: collapse;border-radius:6px;width:90%;font-family:Trebuchet MS;} .rd{font-weight:bold;} .rd {font-weight: bold; font-size:18px;background:#2980B9;color:#fff}';  
  23. table_body += ' .r1 {background-color:#F6F6F6;color:#666666;}';  
  24. table_body += ' .r2 {background-color:#E9E9E9;color:#666666;}';  
  25. table_body += 'td {border: 1px solid grey;text-align: left;padding: 4px;}';  
  26. table_body += 'table.print-friendly tr td, table.print-friendly tr th {page-break-inside: avoid;}';  
  27. table_body += '</style></head><body>';  
  28. table_body += '<center><h1>Appuser List</h1>';  
  29. table_body += '<div class="table-responsive">';  
  30. table_body += '<table class="table">';  
  31. var str_Fields = fields.split(',');  
  32. table_body += '<tr class="rd">';  
  33. for (i = 0; i < str_Fields.length; i++) {  
  34. if (i % 6 == 0)  
  35. {  
  36. table_body += '</tr><tr class="rd">';  
  37. }  
  38. table_body += '<td>' + str_Fields[i] + '</td>';  
  39. }  
  40. table_body += '</tr>';  
  41. for (var i = 0; i < arrData.length; i++) {  
  42. var cssclass = '';  
  43. if (i % 2 == 0) {  
  44. cssclass = 'r1';  
  45. }  
  46. else {  
  47. cssclass = 'r2';  
  48. }  
  49. table_body += '<tr class="' + cssclass + '">';  
  50. var k = 0;  
  51. for (var index in arrData[i]) {  
  52. if (k % 6 == 0) {  
  53. table_body += '</tr><tr class="' + cssclass + '">';  
  54. }  
  55. table_body += '<td>';  
  56. table_body += arrData[i][index];  
  57. table_body += '</td>';  
  58. k++;  
  59. }  
  60. table_body += '</tr>';  
  61. }  
  62. table_body += '</table></div></center></body></html>';  
  63. var d = new Date();  
  64. var fname = d.getDate() + "" + d.getMonth() + "" + d.getYear() + "" + d.getHours() + "" + d.getMinutes() + "" + d.getSeconds();  
  65. res.header('Content-Disposition''attachment; filename=' + fname + '.pdf');  
  66. pdf.create(table_body, options).toStream(function (err, stream) {  
  67. stream.pipe(res);  
  68. });  
  69. }  
  70. });  
  71. }  
Client side code:
  1. ExportPdf()  
  2. {  
  3. axios.get('http://127.0.0.1:9000/getpdf/*', {data: this.data}).then(res => {  
  4. });  
  5. },