2012-04-05 7 views
0

Gibt es eine Möglichkeit, eine Fortschrittsanzeige anzuzeigen, während eine CSV-Datei generiert und über Ajax bereitgestellt wird? Die Erstellung der CSV-Datei dauert aufgrund der Datenbank etwas länger. Sie benötigt einen Loader auf dem Bildschirm und versteckt ihn, wenn er fertig ist. Ich möchte, dass dies Ajax ist oder wenn nötig auf derselben Seite bleibt. Im Moment mache ich das unten, aber ich kann nicht sagen, wann die Datei heruntergeladen wurde, um den Fortschritt zu stoppen.CSV-Datei mit Javascript exportieren und Fortschrittsbalken anzeigen

var iframe = document.createElement("iframe"); 
       iframe.src = (value.url); 
       iframe.style.display = "none"; 
       document.body.appendChild(iframe); 

Antwort

1

Wenn ich Ihre Situation richtig verstehen werden Sie eine Datei auf der Server-Seite zu erzeugen, wenn Sie eine Anfrage erhalten, auf der Festplatte speichern und sie dann von dort zu dienen. Wenn das ist, was Sie tun, haben Sie zwei Möglichkeiten:

  1. -Update einige gemeinsamen Zustand (Memcached, redis, mongodb, eine SQLite-Datenbank oder eine Datei) von erzeugten Codes, wenn Sie die Datei mit der Gesamtzahl beginnen zu erzeugen der zu generierenden Zeilen und der Anzahl der Zeilen, die Sie gerade generiert haben. Machen Sie zusätzliche Ajax-Anfragen an einen Endpunkt zurück, der Ihnen die aktuellen Werte aus diesem freigegebenen Status liefert.
  2. Streamen Sie die generierte CSV-Datei direkt zurück zum Client - es sei denn, das Abrufen der Daten nimmt den größten Teil der Zeit in Anspruch, dies führt zu einem schnelleren Aussehen des Downloaddialogs und einer scheinbaren Beschleunigung.
+0

Ich speichere es nicht auf einer Festplatte, nur um es zu bedienen. Ich versuche den Fortschrittsbalken zu stoppen, sobald es fertig ist. Ihre Lösung, sie in einer temporären Datei zu speichern, könnte meine einzige Option sein, denn dann könnte ich den Fortschritt stoppen und die Datei mit der zweiten Anfrage herunterladen. –

+0

http://forums.asp.net/t/1678390.aspx/1?how+in+implement+file+download+progressbar+in+MVC+ –

+0

@MikeFlynn - yep, eine statische Variable aktualisieren, während Sie die Datei streamen down und einen anderen Webdienst zu treffen, um den Wert in der statischen Variable zu erhalten, zählt als eine Instanz von Option # 1. –

Verwandte Themen