Typescript blob filename without link

后端 未结 2 1604
既然无缘
既然无缘 2020-12-31 17:21

How to set file name for blob in typescript? For IE, I can setup file name easily but for Chrome it looks impossible. Basically I need something similar to this solution but

相关标签:
2条回答
  • 2020-12-31 17:41

    For chrome (and firefox) you need to do a little work around with creating an <a> element and calling click:

    downloadFile(data: any): void {
        const blob: Blob = new Blob([data], {type: 'text/csv'});
        const fileName: string = 'my-test.csv';
        const objectUrl: string = URL.createObjectURL(blob);
        const a: HTMLAnchorElement = document.createElement('a') as HTMLAnchorElement;
    
        a.href = objectUrl;
        a.download = fileName;
        document.body.appendChild(a);
        a.click();        
    
        document.body.removeChild(a);
        URL.revokeObjectURL(objectUrl);
    }
    
    0 讨论(0)
  • 2020-12-31 17:50

    Here is the download method working on IE, chrome and firefox:

      downloadCsvFile(data, fileName) {
        const csvName = fileName +  '.csv';
        const blob = new Blob([data], {type: 'text/csv'});
        if (window.navigator && window.navigator.msSaveOrOpenBlob) { // IE
          window.navigator.msSaveOrOpenBlob(blob, csvName);
          window.navigator.msSaveOrOpenBlob(blob, csvName);
        } else { //Chrome & Firefox
          const a = document.createElement('a');
          const url = window.URL.createObjectURL(blob);
          a.href = url;
          a.download = csvName;
          a.click();
          window.URL.revokeObjectURL(url);
          a.remove();
        }
      }
    
    0 讨论(0)
提交回复
热议问题