当前位置: 首页 > 知识库问答 >
问题:

没有链接的Typescript blob文件名

越琦
2023-03-14

如何在typescript中设置blob的文件名?对于IE,我可以轻松设置文件名,但对于Chrome来说,这似乎是不可能的。基本上,我需要类似于此解决方案的东西,但需要typescript

downloadFile(data: any) {
    var blob = new Blob([data], {type: 'text/csv'});
    let fileName = 'my-test.csv';

    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        //save file for IE
        window.navigator.msSaveOrOpenBlob(blob, fileName);
    } else {
        //save for other browsers: Chrome, Firefox

        var objectUrl = URL.createObjectURL(blob);
        window.open(objectUrl);
    }
}

此函数从html UI/angular 2调用:

<button type="button" class="btn btn-success"
(click)="downloadFile('test')">Download <br /> Download </button>

共有2个答案

方宏才
2023-03-14

以下是IE、chrome和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();
    }
  }
甘永春
2023-03-14

对于chrome(和Firefox),您需要做一些工作来创建

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);
}

 类似资料:
  • 问题内容: 强制通过window.location下载时,如何在JavaScript中设置Blob文件的名称? 运行上面的代码即可立即下载文件,而无需刷新页面,如下所示: bfefe410-8d9c-4883-86c5-d76c50a24a1d 我想将文件名设置为 my-download.json 。 问题答案: 我知道的唯一方法是FileSaver.js使用的技巧: 创建一个隐藏标签。 将其属性

  • 我需要编译一个C项目,它将使用项目中的外部库和头来进行线性规划。它包含两个部分。cpp文件。主要文件,主要农民,取决于pm。H PM. h具有主农场主调用COIN-OR函数所需的所有包含行。这是pm. h的代码: 我有一个由我的老师提供的makefile,并根据自己的需要进行了修改,但每当我试图通过运行makefile来编译项目时,我都会遇到相同的错误: 在文件包含从main-farmer.cpp

  • 问题内容: 大家好,我需要在linux中执行此操作: 给出:文件名“ foo.txt” 查找:所有符号链接到“ foo.txt”的文件 怎么做?谢谢! 问题答案: 这取决于是否要查找指向特定文件的链接,那么这是唯一的好方法: 另一方面,如果您只是想查找指向恰好名为的 任何 文件的链接,则类似 要么

  • 正如您在本教程中看到的那样,http://www.vogella.com/tutorials/JavaPersistenceAPI/article.html 当您声明像 Person 这样的实体时,您必须将其添加到持久性中.xml喜欢

  • 问题内容: 我们是否有理由在链接属性中包含/ 协议? 最好不做任何处理: 问题答案: 包含“ http:”或“ https:”部分只是一个传统问题,一部分是实际指定协议的问题。如果默认,则使用当前页面的协议。例如,///根据引用页面的URL变为http://www.example.com或https://www.example.com。如果网页保存在本地磁盘上然后从那里打开,则该网页没有协议(只是

  • 问题内容: 在Unix中,可以通过以下方式创建匿名文件的句柄,例如,使用creat()创建和打开该文件,然后使用unlink()删除目录链接- 剩下一个带有inode和存储的文件,但是没有办法重新打开它。这些文件通常用作临时文件(通常这是tmpfile()返回给您的)。 我的问题:有什么办法可以将这样的文件重新附加到目录结构中?如果可以这样做,则意味着您可以例如执行文件写入操作,以使文件看起来原子