下载文件在最新版本的谷歌浏览器 [65.0.3325.181(官方内部)(64 位)] 中不起作用



下面的函数在以前的chrome64.0.3282.186 (Official Build) (64-bit)版本中工作正常,但在最新版本的谷歌浏览器中不起作用。[65.0.3325.181 (Official Build) (64-bit)].而不是下载文件,而是在同一选项卡中打开。

为什么这种行为变化出现在最新版本的chrome中,我们如何实现这一目标?

这是具有javaScript行的功能,用于在同一选项卡中下载文件:

$scope.downloadFile = function (file) {
var downloadLink = document.getElementById('downloadDocLink'); 
downloadLink.target = '_self';
downloadLink.href = file.serverPath;
downloadLink.download = file.filename;
downloadLink.click();
}

.HTML:

<a id="downloadDocLink" ng-hide="true"></a>
<button ng-click="downloadFile(file)">Download</button>

在我的项目中遇到了同样的问题。下载失败现在的行为类似于导航到不同的页面,而不是下载栏中的消息。从版本 65 开始,Chrome 的下载行为有所不同。 谷歌阻止了跨源 Chrome 65 中的弃用和移除

这是我不久前编写的下载脚本的方式,它也适用于最新版本的 Chrome,此函数的参数是; blob(要下载的 blob 对象)和名称(文件名的字符串)

if (navigator.msSaveBlob)
return navigator.msSaveBlob(blob, name);
var a = $("<a style='display: none;'/>");
var url = window.URL.createObjectURL(blob);
a.attr("href", url);
a.attr("download", name);
$("body").append(a);
a[0].click();
window.URL.revokeObjectURL(url);
a.remove();

最新更新