我有一个用例,如果可以在新选项卡中打开文件,则应在新选项卡中打开它 . 如果没有,它将以给定名称保存(名称应该是动态设置的名称) .
我目前有以下代码段:
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 回答
下载或保存后打开文件 .
要强制下载,您需要在响应标头中设置Content-Disposition标头
打开文件或下载取决于 . 例如打开PDF,如果您的浏览器支持PDF查看器,它将打开,否则它将自动下载