Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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:发送文件以在Firefox中下载_Javascript_Angularjs_Firefox - Fatal编程技术网

Javascript AngularJS:发送文件以在Firefox中下载

Javascript AngularJS:发送文件以在Firefox中下载,javascript,angularjs,firefox,Javascript,Angularjs,Firefox,我试图在点击按钮时下载几个PDF文件。我目前的代码在Chrome中运行良好,但在Firefox中无法运行 angular.forEach(downloads, function(download) { $http.get(download.url, {responseType: 'arraybuffer'}).then(function(response) { var blob = new Blob([response.data], {type: "applicatio

我试图在点击按钮时下载几个PDF文件。我目前的代码在Chrome中运行良好,但在Firefox中无法运行

angular.forEach(downloads, function(download) {

    $http.get(download.url, {responseType: 'arraybuffer'}).then(function(response) {
        var blob = new Blob([response.data], {type: "application/pdf"});

        var downloadLink = angular.element('<a></a>');
        downloadLink.attr('href',window.URL.createObjectURL(blob));
        downloadLink.attr('download', download.name);
        downloadLink[0].click();
    });
});
angular.forEach(下载,函数(下载){
$http.get(download.url,{responseType:'arraybuffer'}){
var blob=new blob([response.data],{type:“application/pdf”});
var downloadLink=angular.element('


在Firefox中是否有任何解决方法可以让这项功能正常工作?

我有一个类似的角度下载,这里的工作原理是:

var blob = new Blob([response.data], {type: "application/pdf"});
var blobURL = window.URL.createObjectURL(blob);
if (window.navigator.msSaveOrOpenBlob) {
    // of course, IE needs special hand-holding....
    window.navigator.msSaveOrOpenBlob(blob, 'something.pdf');
} else {
    window.open(blobURL);

请绝对确保您没有阻止该网站的弹出窗口,这已经让我在各种浏览器上多次被绊倒。

我使用了IFrame进行下载。只需将url传递给此函数即可下载

    $scope.downloadUrl = function (url) {
        var oIframe = window.document.createElement('iframe');
        var $body = $(document.body);
        var $oIframe = $(oIframe).attr({
            src: url,
            style: 'display:none;'
        });
        $body.append($oIframe);
        $scope.actions++;
    };
然后你可以打电话给我

    $scope.downloadUrl('/data/url/goes/here');

这只是在ChromeChrome上的一个新选项卡中打开,它总是在这里打开PDF,它从不下载。您可以尝试将
类型设置为“应用程序/八位字节流”-这应该会强制下载。这会将内容放在iframe中,但不会让浏览器想下载它Firefox&IE不支持在同一页面上进行多次下载,因为Chrome不支持多次下载。我在Firefox上使用了上述代码进行解决,而且确实有效。有关通过iframe下载的更多信息,请参阅本文:[链接]