Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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