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

时间:2018-06-29 11:50:21

标签: javascript angular window

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

我目前有以下代码段:

         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()时,将在新选项卡中打开)。 我的要求是:如果可以在新标签页中打开文件,则应在新标签页中打开文件(例如pdf / text等(使用window.open()尝试在新标签页中打开) )。 我了解我可以使用 window.open(),但这不支持将所需名称设置为文件。

有没有办法做到这一点? 另外,如何确定文件在下载之前是否可以在新选项卡中打开?如果我知道无法打开文件,那么在这种情况下,我会下载其他文件,然后在新标签页中打开它。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

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