Ziel:
Ich möchte meinen Nutzern erlauben, eine Datei auf meiner Webseite herunterzuladen. Ich möchte ein neues Fenster öffnen und die Datei dort anzeigen oder herunterladen.
Meine Implementierung:
Diese Datei muss jedoch zuerst auf der Serverseite generiert werden, was eine Weile dauern kann. Wenn der Benutzer auf die Schaltfläche klickt, um die Datei herunterzuladen, führe ich einen Ajax-Anruf aus und zeige eine wartende Animation an, bis ich eine Antwort erhalte. Die Controller-Aktion, die den Aufruf behandelt, generiert die Datei (PDF) und gibt ein FileResult zurück. Jetzt in der Succes-Funktion von meinem Ajax-Aufruf zurück in Javascript, bekomme ich die Dateidaten.
Problem: Ich habe keine Idee, was ich mit diesen Daten machen soll, um es dem Benutzer zu vermitteln.
Workaround:
Im Moment verwende ich einen Workaround, bei dem ich die Datei im Ajax-Aufruf nicht zurückgebe, sondern sie in der Session ablege. In der Succes-Funktion mache ich window.open("/controller/getPDFFromSession")
, die die Datei herunterladen wird. Ich bevorzuge es jedoch, die Sitzung nicht für diese Art von Dingen zu verwenden.
Vielen Dank im Voraus.
Problem: Ich habe keine Ahnung, was ich mit diesen Daten machen soll, um es an den Benutzer zu bringen.
Aus diesem Grund sollten Sie AJAX nicht zum Herunterladen von Dateien verwenden. Sie könnten Folgendes tun:
src
auf die Controller-Aktion verweist, die die Datei Tags und Links asp.net-mvc-3 jquery ajax file