我有一个用例,如果可以在新选项卡中打开文件,则应在新选项卡中打开它。如果没有,它将以给定名称保存(名称应为动态设置的名称)。
我目前有以下代码段:
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(),但这不支持将所需名称设置为文件。
有没有办法做到这一点? 另外,如何确定文件在下载之前是否可以在新选项卡中打开?如果我知道无法打开文件,那么在这种情况下,我会下载其他文件,然后在新标签页中打开它。
答案 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查看器,它将打开,否则它将自动下载