首页 文章

以角度下载后打开或保存文件

提问于
浏览
0

我有一个用例,如果可以在新选项卡中打开文件,则应在新选项卡中打开它 . 如果没有,它将以给定名称保存(名称应该是动态设置的名称) .

我目前有以下代码段:

if (windowService.navigator.msSaveOrOpenBlob) {
             windowService.navigator.msSaveOrOpenBlob(file, fileName);
         } else {
             const link: HTMLAnchorElement = document.createElement("a") as HTMLAnchorElement;
             link.href = windowService.URL.createObjectURL(file);
             if (fileName) {
                 link.download = fileName;
             }
             link.target = "_blank";
             document.body.appendChild(link);
             link.click();
             document.body.removeChild(link);
         }

当我使用它时,会下载所有文件(包括pdf / text,否则在使用window.open()时会在新选项卡中打开) . My requirement is :如果可以在新选项卡中打开文件,则应在新选项卡中打开它们(例如,pdf / text等(在使用window.open()时尝试打开新文件) . ) . 我知道我可以使用 window.open() 但不支持将 desired name 设置为file .

有没有办法实现这个目标?另外,在下载文件之前,如何确定是否可以在新选项卡中打开文件?如果我知道文件无法打开,那么我下载其他我在新标签中打开它 .

2 回答

  • 0

    下载或保存后打开文件 .

    /**
     * Method is use to download file.
     * @param data - Array Buffer data
     * @param type - type of the document.
     */
    downLoadFile(data: any, type: string) {
        var blob = new Blob([data], { type: type.toString() });
        var url = window.URL.createObjectURL(blob);
        window.open(url);
    }
    
  • 0

    要强制下载,您需要在响应标头中设置Content-Disposition标头

    打开文件或下载取决于 . 例如打开PDF,如果您的浏览器支持PDF查看器,它将打开,否则它将自动下载

相关问题