Ich habe eine Tabelle mit einer Liste von Dateien vom Server abgerufen. Ich habe auch eine Schaltfläche, die die ausgewählte Datei herunterlädt. Also habe ich eine Funktion erstellt, die einen Dienst aufruft und die Antwort (die Datei) in einem neuen Fenster öffnet, damit der Benutzer sie herunterladen kann. Steuerung:Datei herunterladen mit Angular und Django
$scope.download = function() {
if ($scope.cancelPromise) {
$scope.cancelPromise.resolve();
}
$scope.cancelPromise = $q.defer();
UserFileSrv.downloadFile.download(
{
fileId: $scope.selectedFile.id
},function(data) {
if (data) {
toaster.pop('success', 'Success', 'success');
window.open(data);
}
}, function(error) {
if (error) {
toaster.pop('error', 'Error', error);
}
}
);
};
Der Service:
angular.module('app').factory('UserFileSrv', ['$resource', function($resource) {
var userFile = {
downloadFile: $resource('my_url/:fileId/?', {
fileId: '@fileId'
}, {
download: {
method: 'GET',
isArray: false
}
})
};
return userFile;
}]);
Der Browser zeigt den 'Erfolg' Toaster, aber es öffnet sich ein Fenster, das diese Zeichenfolge enthält: Cannot GET /%5Bobject%20Object%5D
Hinweis: Der Content-Type der Antwort lautet: application/json
Ich versuche den zweiten Weg und es scheint Arbeit, aber es downloaden Sie die Datei 'myData.json' ... Was kann ich tun, wenn die Datei, die ich downloader bin ein Bild? Ich werde nicht wissen, das Format der Datei, es könnte alles – panagulis72
Sie erwähnen, dass Ihre Antwort ist Application/Json. Wenn Sie jedoch verschiedene Dateitypen herunterladen möchten, sollte sich auch der Inhaltstyp der Antwort unterscheiden. Sie können es analysieren und die richtige Erweiterung auswählen. – vladir
Ich mache Front-End-Seite. Die Person, die die Back-End-Seite macht, sagte mir, dass die Antwort des Download-Aufrufs "Content-Type: application/json" ist ... aber die Datei könnte ein PNG, ein PDF, etc. sein. – panagulis72