2016-09-12 4 views
1

macht Ist es möglich, einen Download über eine Schaltfläche auszulösen und AngularJS $http Dienst im Hintergrund zu verwenden, um die Datei bereitzustellen?

Ich möchte eine einfache Schaltfläche haben, die einen Dateidownload startet, ohne ein neues Fenster zu öffnen. Außerdem muss ich die Authorization innerhalb der Kopfzeile setzen.

Bisher habe ich dies:

var app = angular.module('myApp', []); 
 

 

 
app.controller('myCtrl', function($scope, $http) { 
 

 
    $scope.startDownload = function() { 
 
    var auth = ""; //username + password 
 
    $http.defaults.headers.common['Authorization'] = auth; 
 

 
    //this will return a file 
 
    $http({ 
 
     method: 'GET', 
 
     url: 'https://upload.wikimedia.org/wikipedia/commons/1/1c/FuBK_testcard_vectorized.svg?download'/*, 
 
     headers: { 
 
     'Authorization': 'Basic efhjwefjfbweikabfkwhfb' 
 
     }*/ 
 
    }).then(function(){ 
 
     //???? 
 
    }); 
 
    }; 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <button type="button" ng-click="startDownload()">Download</button> 
 
</div>

Antwort

0

Nach einer Tonne von Fragen in Bezug auf ähnliche Probleme beim Lesen, betont, dass es nicht möglich ist, um eine Datei auf der Benutzerdiskette zu speichern, die von einer AJAX-Anfrage stammt.

Siehe diese Frage auf Stackoverflow.

2

Änderung dieser:

ng-click="startDownload()" 
+0

Ich habe den Tippfehler korrigiert. Aber es funktioniert immer noch nicht. Ich habe die Frage aktualisiert und eine vorhandene URL zu einer Bilddatei hinzugefügt. Das Snippet lädt die Datei im Download-Ordner des Benutzers immer noch nicht herunter. – d4rty

Verwandte Themen