Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 19401|Resposta: 2

[ASP.NET] ASP.NET usar o HttpListener para retomar pontos de interrupção de arquivos

[Copiar link]
Publicado em 27/11/2019 10:42:41 | | |
O princípio da continuação do ponto de interrupção é muito simples, ou seja, o cabeçalho da mensagem HTTP de requisição e resposta é diferente do download normal.
Ao solicitar um documento em um servidor da forma normal, a solicitação feita e o servidor recebido são os seguintes:
Cabeçalho do pedido:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Cabeçalho da resposta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Quando o servidor suporta a retomada de breakpoint, a solicitação e a resposta são as seguintes:
Cabeçalho do pedido:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Cabeçalho da resposta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

As diferentes partes das duas mensagens são marcadas com seções vermelhas. Pode ser observado:
O cabeçalho Range é usado para identificar o local de download desejado pelo cliente.
Quando o número de resposta do servidor é 200, significa que o download começa pelo cabeçalho do arquivo, e 206 significa que a transferência começa em um local específico do arquivo.
Em outras palavras, ao suportar a retomada por ponto de interrupção, você pode começar a baixar de qualquer parte do arquivo, enquanto a forma normal só pode baixar do cabeçalho do arquivo.
Para que o ponto de interrupção de suporte ao servidor seja retomado, os seguintes problemas precisam ser resolvidos:

1。 Se for um pedido de retomada, você precisa obter o intervalo de arquivos exigido pelo cliente.
Como você pode ver na análise acima, quando o cliente está transmitindo um ponto de interrupção, o campo Range é adicionado ao cabeçalho do pacote, e você pode determinar se é uma solicitação de transmissão de ponto de interrupção da seguinte forma.
Intervalo de string = solicitação. Cabeçalhos["Range"];
bool isResume = string. IsNullOrEmpty (alcance);

2。 Responda corretamente ao cliente para notificar o servidor cliente de que o endpoint é suportado para continuação
Ao enviar uma solicitação de ponto de interrupção, o número correspondente para o cliente pode ser definido da seguinte forma:
resposta. StatusCode = 206;

3。 Entregue o conteúdo certo que o cliente precisa
Entregar o conteúdo correto exigido pelo cliente geralmente envolve os seguintes passos
Obtenha o intervalo de solicitações de arquivo do cliente analisando o intervalo.
Quando um ponto de interrupção é enviado, o comprimento necessário é menor que o comprimento do arquivo, então a resposta correta precisa ser definida. ConteúdoComprimento64 proprietário.
Transfira corretamente o conteúdo necessário
Exemplo de código:






Anterior:httplistener ouve para obter os parâmetros de solicitação POST
Próximo:18 quadrinhos filosóficos, todos mestres
Publicado em 27/11/2019 13:14:14 |
Mark
Publicado em 30/11/2019 12:04:39 |
marcado      
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com