Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 19401|Отговор: 2

[ASP.NET] ASP.NET използвам HttpListener, за да възобновя прекъсванията на файловете

[Копирай линк]
Публикувано в 27.11.2019 г. 10:42:41 ч. | | |
Принципът на продължаване на точката на прекъсване е много прост, тоест заглавието на HTTP заявката и съобщението за отговор е различно от обичайното изтегляне.
При искане на документ на сървър по обичайния начин, направената заявка и полученият сървър са следните:
Заглавие на заявката:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Отговорен заглавие:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Когато сървърът поддържа възобновяване на точката на прекъсване, заявката и отговорът са както следва:
Заглавие на заявката:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Отговорен заглавие:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Различните части на двете съобщения са маркирани с червени секции. Може да се види:
Заглавието Range се използва за идентифициране на желаното от клиента място за изтегляне.
Когато номерът на отговора на сървъра е 200, това означава, че изтеглянето започва от заглавката на файла, а 206 означава, че трансферът започва от конкретно място на файла.
С други думи, при поддържане на възобновяване на точка на прекъсване, можете да започнете изтегляне от всяка част на файла, докато нормалният начин може да се изтегля само от заглавието на файла.
За да се възобнови точката на прекъсване в сървъра, трябва да се решат следните проблеми:

1。 Ако е заявка за възобновяване, трябва да получите необходимия от клиента обхват на файловете.
Както виждате от горния анализ, когато клиентът предава точка на прекъсване, полето Range се добавя към заглавието на пакета и можете да определите дали това е заявка за предаване на точка на прекъсване, както следва.
обхват на низове = заявка. Headers["Range"];
bool isResume = низ. IsNullOrEmpty(обхват);

2。 Отговорете правилно на клиента, за да уведомите клиентския сървър, че крайната точка е поддържана за продължаване
При изпращане на заявка за точка на прекъсване, съответният номер за клиента може да бъде зададен по следния начин:
отговор. StatusCode = 206;

3。 Осигурете правилното съдържание, от което клиентът се нуждае
Доставянето на правилното съдържание, необходимо от клиента, обикновено включва следните стъпки
Вземете обхвата на заявките за файлове на клиента, като анализирате диапазона.
Когато се изпраща точка на прекъсване, необходимата дължина е по-къса от дължината на файла, затова трябва да се зададе правилният отговор. ContentLength64 свойства.
Прехвърлете необходимото съдържание правилно
Пример за код:






Предишен:httplistener слуша, за да получи параметрите за заявка на POST
Следващ:18 философски комикса, всички от които са майстори
Публикувано в 27.11.2019 г. 13:14:14 ч. |
Марк
Публикувано в 30.11.2019 г. 12:04:39 ч. |
отбелязано      
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com