Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 19401|Válasz: 2

[ASP.NET] ASP.NET a HttpListener-t használom a fájltörési pontok folytatásához

[Linket másol]
Közzétéve 2019. 11. 27. 10:42:41 | | |
A megszakítási pont folytatásának elve nagyon egyszerű, vagyis a HTTP kérés és válasz üzenet fejléce eltér a normál letöltéstől.
Amikor egy dokumentumot normál módon kérsz egy szerveren, a megtett és a kapott kérés a következők:
Kérés fejléce:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Válasz fejléce:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Amikor a szerver támogatja a megszakítási pont újraindítását, a kérés és a válasz a következők:
Kérés fejléce:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Válasz fejléce:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

A két üzenet különböző részeit piros szakaszokkal jelölik. Látható:
A Range fejlécet arra használják, hogy azonosítsák az ügyfél kívánt letöltési helyét.
Ha a szerver válaszszáma 200, az azt jelenti, hogy a letöltés a fájlfejlécből indul, a 206 pedig azt jelenti, hogy az átvitel a fájl egy adott helyéről indul.
Más szóval, amikor támogatod a megszakítási pont újraindítását, elkezdheted a letöltést a fájl bármely részéről, míg a normál mód csak a fájlfejlécből tud letölteni.
Ahhoz, hogy a szerver támogassa a megszakítási pont újraindítását, a következő problémákat kell megoldani:

1。 Ha folytatási kérésről van szó, akkor meg kell szerezned a kliens által előírt fájltartományt.
Ahogy a fenti elemzésből is látható, amikor a kliens megszakítási pontot továbbít, a Range mező hozzáadódik a csomagfejléchez, és az alábbiak szerint megállapíthatod, hogy megszakítási pont átviteli kérésről van szó.
string range = kérés. Fejlécek["Range"];
bool isResume = string. IsNullOrEmpty(távolság);

2。 Megfelelően válaszolj az ügyfélnek, hogy értesítsd az ügyfélszervert arról, hogy a végpont támogatott a folytatáshoz
Megszakítási pont kérésekor a kliens megfelelő száma a következőképpen állítható:
válasz. StatusCode = 206;

3。 A megfelelő tartalmat szolgáltasd meg, amire az ügyfélnek szüksége van
Az ügyfél által elvárt megfelelő tartalom biztosítása általában a következő lépéseket foglalja magában
A kliens fájlkérés tartományát elemzve szerezze meg a fájlkérés tartományát.
Amikor megszakításpontot küldenek, a szükséges hossz rövidebb, mint a fájl hossza, ezért a helyes választ kell beállítani. ContentLength64 tulajdonság.
A szükséges tartalom helyes átvitele
Kód példa:






Előző:a httplistener meghallgatja, hogy megkapja a POST kérésparamétereket
Következő:18 filozófiai képregény, akik mind mesterek
Közzétéve 2019. 11. 27. 13:14:14 |
Mark
Közzétéve 2019. 11. 30. 12:04:39 |
Jelölt      
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com