以下功能在以前的chrome 64.0.3282.186 (Official Build) (64-bit)
版本中运行良好,但同样在最新版本的google chrome中无效。 [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>
答案 0 :(得分:1)
在我的项目中遇到同样的问题。下载失败现在表现得像导航到不同的页面而不是下载栏中的消息。自版本65开始,Chrome就有不同的下载行为。 谷歌阻止了跨域起源 Deprecations and removals in Chrome 65
答案 1 :(得分:1)
以下是我写的一段时间我的下载脚本,它也适用于最新版本的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();