Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用链接强制下载Angularjs中的PDF/图像/视频/音频_Javascript_Html_Angularjs_Google Chrome_Download - Fatal编程技术网

Javascript 如何使用链接强制下载Angularjs中的PDF/图像/视频/音频

Javascript 如何使用链接强制下载Angularjs中的PDF/图像/视频/音频,javascript,html,angularjs,google-chrome,download,Javascript,Html,Angularjs,Google Chrome,Download,我想强制下载文件。但在新的chrome更新中,如果是图像/视频/音频/PDF文件,文件将在浏览器上打开而不是下载 HTML: 注意:要检查此问题,您必须更新您的google chrome(版本66.0.3359.117(官方版本)(64位))。 我怎样才能做到这一点。我已经检查了stackoverflow.com上的几乎所有回复,但是没有解决我的问题的方法,因为它是在新的chrome更新下发布的。我感谢每一个回复。谢谢 由于download属性只适用于同一来源,我认为您可能需要使用JS下载数据,

我想强制下载文件。但在新的chrome更新中,如果是图像/视频/音频/PDF文件,文件将在浏览器上打开而不是下载 HTML:

注意:要检查此问题,您必须更新您的google chrome(版本66.0.3359.117(官方版本)(64位))。
我怎样才能做到这一点。我已经检查了stackoverflow.com上的几乎所有回复,但是没有解决我的问题的方法,因为它是在新的chrome更新下发布的。我感谢每一个回复。谢谢

由于download属性只适用于同一来源,我认为您可能需要使用JS下载数据,创建Blob,然后下载它。但这似乎不是一个好主意,因为实现/跨浏览器关注点需要复杂度/时间。或者,您可以在服务器上创建一个代理,以便下载,这在我看来更可取。在较旧版本的chrome中,相同的代码可以将所有类型的文件下载到浏览器中,但在较新版本的chrome中,打开文件。但是我的要求很明确,不打开就直接下载每个文件。你知道关于这个的确切发行说明吗?我建议在同一个域上放一个PDF,看看它是否有效,如果有效,那么你可以设置一个S3的代理端点。我已经提到了chrome的确切版本。我也尝试过将pdf放在同一个域中,但仍然不起作用。是的,下载属性仅适用于某些浏览器,如chrome。
<a href="" ng-click="downloadFile()">Click to download file</a>
$scope.downloadFile = function () {   
        fileInfo = {
            path: collection.file_path,
            file_name: collection.file_name
        };
        payOutService.getSignedUrlFromS3ByPath(fileInfo).success(function (response) {//response is simply file link
                var link = document.createElement("a");
                link.download = collection.file_name;
                link.href = response;
                link.click();
            }

        });
};