Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 19401|Antwort: 2

[ASP.NET] ASP.NET nutze HttpListener, um Datei-Breakpoints wieder zu speichern

[Link kopieren]
Veröffentlicht am 27.11.2019 10:42:41 | | |
Das Prinzip der Breakpoint-Fortsetzung ist sehr einfach, das heißt, der Header der HTTP-Anfrage und Antwort unterscheidet sich vom normalen Download.
Wenn ein Dokument auf einem Server auf übliche Weise angefordert wird, sind die gestellten Anfragen und der empfangene Server wie folgt:
Anfrage-Header:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Antwort-Header:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Wenn der Server die Breakpoint-Wiederaufnahme unterstützt, sind Anfragen und Antwort wie folgt:
Anfrage-Header:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Antwort-Header:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Die verschiedenen Teile der beiden Nachrichten sind mit roten Abschnitten markiert. Es ist zu sehen:
Der Range-Header wird verwendet, um den gewünschten Download-Standort des Kunden zu identifizieren.
Wenn die Antwortnummer des Servers 200 ist, bedeutet das, dass der Download vom Dateiheader beginnt, und 206 bedeutet, dass die Übertragung an einem bestimmten Speicherort der Datei beginnt.
Mit anderen Worten: Wenn man die Breakpoint-Wiederaufnahme unterstützt, kann man von jedem Teil der Datei herunterladen, während man normalerweise nur vom Dateiheader herunterladen kann.
Damit der Server die Breakpoint-Wiederaufnahme unterstützt, müssen folgende Probleme gelöst werden:

1。 Handelt es sich um eine Wiederaufnahmeanfrage, müssen Sie den vom Client geforderten Dateibereich erhalten.
Wie Sie aus der obigen Analyse sehen können, wird beim Senden eines Breakpoints das Range-Feld zum Paketheader hinzugefügt, und Sie können wie folgt feststellen, ob es sich um eine Breakpoint-Übertragungsanfrage handelt.
String-Bereich = Anfrage. Headers["Range"];
bool isResume = String. IsNullOrEmpty(Bereich);

2。 Antworten Sie korrekt auf den Client, um den Client-Server darüber zu informieren, dass der Endpunkt für die Fortsetzung unterstützt wird
Beim Senden einer Anfrage nach einem Breakpoint kann die entsprechende Zahl für den Client wie folgt gesetzt werden:
Antwort. StatusCode = 206;

3。 Liefern Sie die richtigen Inhalte, die der Kunde benötigt
Die Bereitstellung der vom Kunden gewünschten Inhalte umfasst in der Regel folgende Schritte
Erhalten Sie den Dateianforderungsbereich des Kunden, indem Sie den Bereich analysieren.
Wenn ein Breakpoint gesendet wird, ist die erforderliche Länge kürzer als die der Datei, daher muss die korrekte Antwort gesetzt werden. ContentLength64-Eigenschaft.
Übertragen Sie die erforderlichen Inhalte korrekt
Codebeispiel:






Vorhergehend:httplistener hört, um die POST-Anfrageparameter zu erhalten
Nächster:18 philosophische Comics, die alle Meister sind
Veröffentlicht am 27.11.2019 13:14:14 |
Mark
Veröffentlicht am 30.11.2019 12:04:39 |
Markiert      
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com