Ich gebe eine Datei von einem ASP.NET MVC-Controller und ich möchte es als Anhang mit AngularJS herunterladen.AngularJS Datei von ASP.NET MVC Controller speichern
MVC Controller:
return File(renderedBytes, mimeType);
AngularJS:
function generatePDF(reportRequest) {
var reportController = "Report";
var controllerUrl = ngAppSettings.homeBaseUri + reportController + "/GeneratePDF";
var deferred = $q.defer();
$http({
method: "POST",
url: controllerUrl,
data: reportRequest
}).success(function (data, status, headers, cfg) {
//window.open(controllerUrl, "_self", "");
deferred.resolve(data);
}).error(function (err, status) {
deferred.reject(err);
});
return deferred.promise;
};
ich verschiedene Weise versucht haben, als auf den ähnlichen Fragen zu diesem Thema vorgeschlagen, aber ich bekomme es nicht.
Ich habe this auch versucht.
Meine Breakpoints treffen ohne Probleme im GeneratePDF-Controller, danach passiert nichts mehr. Wie würde ich darüber gehen?
EDIT:
Ich habe auch versucht angular file saver aber ich erhalte eine Fehlermeldung, dass das Format in BLOB sein sollte. Wenn ich die Antwort nur auf einen Blob umwandeln kann, dann denke ich, dass es das sein könnte.
TIA
Es ist nur das Design aller meiner eckigen Dienste verwendet $ q Service, die ich ignorieren kann, wenn dies ein Problem ist. Wie übergebe ich mit window.open mein reportRequest-Objekt als Parameter für den GeneratePDF-Controller? Ich brauche es für die Datenverarbeitung. –
Ah, sorry, habe das bisschen übersehen. Gibt es eine Menge Daten in der reportRequest oder ist es etwas, das in einer "GET" -Abfragezeichenfolge dargestellt werden könnte (auch bekannt als einfache Grundelemente, aus denen Sie eine Abfragezeichenfolge erstellen können)? Leider ist mir keine Möglichkeit bekannt, einen "POST" zu machen, um das Dokument herunterzuladen. Wenn Sie eine Menge Daten zurück zum Prozess senden müssen, um das PDF zu generieren, müssen Sie dies entweder tun und den Server ein Token zurückgeben lassen, das Sie dann verwenden können, um ein GET zu tun (mit window.open) das wird dann das FileResult zurückgeben, das auf dem Server auf irgendeine Weise zwischengespeichert wird. – sourdoughdetzel
Ich kann nicht alle Daten als Abfragezeichenfolge übergeben, da die Anforderung eine Liste von Objekten enthält. Ich plante das auch zuerst, ging aber nicht weiter. –