2 Stimmen

Bessere Benutzererfahrung für Websites in asp.net MVC

Ich habe eine Seite, die eine große HTML-Datei von einer anderen Domain herunterlädt und sie dann dem Benutzer zur Verfügung stellt. Die Datei ist etwa 100k - 10MB groß und dauert normalerweise etwa 5min. Was war zu tun so etwas denken, um die Benutzererfahrung besser zu machen.

  • Datei herunterladen
  • wenn die Datei nicht innerhalb von 10 Sekunden heruntergeladen wird, wird eine Seite angezeigt, die dem Benutzer mitteilt, dass die Datei heruntergeladen wird
  • Wenn der Server den Download in 1 Sekunde abschließt, wird die heruntergeladene HTML-Datei bereitgestellt.

Ist dies möglich? Muss ich die asynchrone Funktion verwenden?

Aktualisierte Frage: die heruntergeladene Datei ist eine html-Datei

1voto

Jakub Konecki Punkte 44858

Um einen "asynchronen" Dateidownload zu ermöglichen, versuchen Sie einen Trick, den Google anwendet: Erstellen Sie einen versteckten iframe und setzen Sie dessen Quelle auf die Datei, die Sie herunterladen möchten. Sie können dann immer noch Javascript auf Ihrer Originalseite ausführen, während die Datei über den iframe heruntergeladen wird.

0voto

Tom de Waard Punkte 373

Ich denke, das sollten Sie:

  1. Geben Sie dem Benutzer sofort eine HTML-Seite zurück, um ihn zu informieren, dass die Übertragung begonnen hat.
  2. Starten Sie den Download von der anderen Domain in einem separaten Prozess auf Ihrem Server.
  3. Lassen Sie den HTML-Code aus Schritt 1 immer wieder neu laden, damit Sie überprüfen können, ob der Download bereits abgeschlossen ist, und dem Benutzer eventuell eine voraussichtliche Ankunftszeit oder ein Update mitteilen können.
  4. Geben Sie einen Link an den Benutzer zurück, wenn die erste Übertragung abgeschlossen ist.

0voto

Chad Punkte 3000

Es klingt, als bräuchten Sie eine Warteseite, die sich in regelmäßigen Abständen aktualisiert und den Status Ihres Downloads anzeigt. Der Download kann in einem separaten Thread ausgeführt werden, z. B. mit einem System.Threading.Task.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X