Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 19401|Répondre: 2

[ASP.NET] ASP.NET utiliser HttpListener pour reprendre les points d’arrêt des fichiers

[Copié le lien]
Publié sur 27/11/2019 10:42:41 | | |
Le principe de la continuation du point d’arrêt est très simple, c’est-à-dire que l’en-tête du message HTTP requête et réponse est différent du téléchargement normal.
Lors de la demande d’un document sur un serveur de manière normale, la requête faite et le serveur reçu sont les suivants :
En-tête de requête :
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
En-tête de réponse :
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Lorsque le serveur prend en charge la reprise du point d’arrêt, la requête et la réponse sont les suivantes :
En-tête de requête :
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
En-tête de réponse :
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Les différentes parties des deux messages sont marquées par des sections rouges. On peut le voir :
L’en-tête Range sert à identifier le lieu de téléchargement souhaité par le client.
Lorsque le numéro de réponse du serveur est 200, cela signifie que le téléchargement commence depuis l’en-tête du fichier, et 206 signifie que le transfert commence à un emplacement précis du fichier.
En d’autres termes, lorsque vous supportez la reprise par point d’arrêt, vous pouvez commencer à télécharger depuis n’importe quelle partie du fichier, alors que la méthode normale ne peut télécharger que depuis l’en-tête du fichier.
Pour que le point d’arrêt de support serveur reprenne le contrôle, les problèmes suivants doivent être résolus :

1。 Si c’est une demande de reprise, vous devez obtenir la plage de fichiers requise par le client.
Comme vous pouvez le voir dans l’analyse ci-dessus, lorsque le client transmet un point d’arrêt, le champ Range est ajouté à l’en-tête du paquet, et vous pouvez déterminer s’il s’agit d’une demande de transmission de point d’arrêt comme suit.
plage de chaînes = requête. En-têtes [« Range »] ;
bool isResume = chaîne. IsNullOrEmpty (portée) ;

2。 Répondre correctement au client pour notifier le serveur client que le point de terminaison est supporté pour la continuation
Lors de l’envoi d’une requête pour un point d’arrêt, le nombre correspondant pour le client peut être défini comme suit :
Réponse. StatusCode = 206 ;

3。 Livrez le bon contenu dont le client a besoin
La livraison du contenu approprié requis par le client implique généralement les étapes suivantes
Obtenez la plage de requêtes de fichiers du client en analysant cette plage.
Lorsqu’un point d’arrêt est envoyé, la longueur requise est plus courte que celle du fichier, il faut donc définir la réponse correcte. ContentLength64 propriété.
Transférez correctement le contenu requis
Exemple de code :






Précédent:httplistener écoute pour obtenir les paramètres de requête POST
Prochain:18 bandes dessinées philosophiques, toutes maîtresses
Publié sur 27/11/2019 13:14:14 |
Mark
Publié sur 30/11/2019 12:04:39 |
marqué      
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com