下载文件无法在最新版本的谷歌浏览器中使用[65.0.3325.181(官方版本)(64位)]

时间:2018-04-10 08:48:02

标签: javascript angularjs google-chrome

以下功能在以前的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>

2 个答案:

答案 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();