DownloadService.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import Common from './Common.js';
  2. /**
  3. * 报表下载服务
  4. */
  5. export default {
  6. /**
  7. * GET 方式下载文件
  8. * @param {*} url
  9. * @param {*} fileName
  10. */
  11. downloadFile: function (url, fileName) {
  12. var xhr = new XMLHttpRequest();
  13. xhr.open('get', url, true);
  14. const token = localStorage.getItem('#token');
  15. xhr.setRequestHeader('token', token);
  16. xhr.setRequestHeader('Content-type', 'application/json');
  17. xhr.responseType = 'blob';
  18. xhr.onreadystatechange = function(){
  19. if(xhr.readyState === 4 && xhr.status === 200){
  20. let res = xhr.response;
  21. let type = xhr.getResponseHeader('Content-Type');
  22. let blob = new Blob([res], { type: type });
  23. const blobUrl = URL.createObjectURL(blob);
  24. const link = document.createElement('a');
  25. link.download = fileName;
  26. link.style.display = 'none';
  27. link.href = blobUrl;
  28. document.body.appendChild(link);
  29. link.click();
  30. URL.revokeObjectURL(blobUrl);
  31. document.body.removeChild(link);
  32. }
  33. };
  34. xhr.send();
  35. },
  36. /**
  37. * 报表下载
  38. * @param {Object} fileName
  39. * @author GuoZhiBo 20200410
  40. */
  41. reportDownload: function (fileName) {
  42. var downloadUrl = Common.getApiURL('file/reportDownload') + '?fileName=' + window.encodeURIComponent(fileName);
  43. this.downloadFile(downloadUrl, fileName);
  44. },
  45. /**
  46. * 文件下载
  47. * @param {Object} className 类名称
  48. * @param {Object} fileName 文件名称
  49. * @author GuoZhiBo 20211008
  50. */
  51. fileDownload:function(className, fileName){
  52. var downloadUrl = Common.getApiURL('file/fileDownload') + '?className=' + className
  53. + '&fileName=' + window.encodeURIComponent(fileName);
  54. this.downloadFile(downloadUrl, fileName);
  55. },
  56. /**
  57. * POST 方式下载文件
  58. * @param {http请求的地址} url
  59. * @param {post请求需要的参数} params
  60. */
  61. postDownloadFile: function (url, params) {
  62. var form = document.createElement('form');
  63. form.style.display = 'none';
  64. form.action = url;
  65. form.method = 'post';
  66. document.body.appendChild(form);
  67. // 动态创建input并给value赋值
  68. for (var key in params) {
  69. var input = document.createElement('input');
  70. input.type = 'hidden';
  71. input.name = key;
  72. input.value = params[key];
  73. form.appendChild(input);
  74. }
  75. form.submit();
  76. form.remove();
  77. },
  78. };