Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

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