1. /**
    2. * 下载
    3. * @param {String} url 目标文件地址
    4. * @param {String} filename 想要保存的文件名称
    5. */
    6. function courseDownload(url, filename) {
    7. getBlob(url, function(blob) {
    8. saveAs(blob, filename);
    9. })
    10. }
    11. function getBlob(url,cb) {
    12. var xhr = new XMLHttpRequest();
    13. xhr.open('GET', url, true);
    14. xhr.responseType = 'blob';
    15. xhr.onload = function() {
    16. if (xhr.status === 200) {
    17. cb(xhr.response);
    18. }
    19. };
    20. xhr.send();
    21. }
    22. /**
    23. * 保存
    24. * @param {Blob} blob
    25. * @param {String} filename 想要保存的文件名称
    26. */
    27. function saveAs(blob, filename) {
    28. if (window.navigator.msSaveOrOpenBlob) {
    29. navigator.msSaveBlob(blob, filename);
    30. } else {
    31. var link = document.createElement('a');
    32. var body = document.querySelector('body');
    33. link.href = window.URL.createObjectURL(blob);
    34. link.download = filename;
    35. // fix Firefox
    36. link.style.display = 'none';
    37. body.appendChild(link);
    38. link.click();
    39. body.removeChild(link);
    40. window.URL.revokeObjectURL(link.href);
    41. }
    42. }