Suggestions pour le meilleur moyen d’implémenter le CV de téléchargement HTTP

Je travaille sur un projet qui permettra le téléchargement de fichiers volumineux (GB +) via HTTP PUT et je dois implémenter une méthode pour reprendre le téléchargement. Une fois qu’un fichier est téléchargé et finalisé, il est complet et ne peut plus être modifié. Jusqu’à présent, j’ai deux options en tête, mais aucune ne correspond parfaitement:

Option 1

Le client envoie une demande HEAD initiale sur le fichier qui renverra 404 s’il n’existe pas ou les détails du fichier, y compris la taille actuelle, ainsi qu’un en-tête X HTTP sur les lignes de X-Can-Resume ou quelque chose comme Le fichier peut être repris et un en-tête Range spécifiant les octets dont il dispose. Cela semble correct, mais je ne suis pas enthousiasmé par le X-Header car il supprime de la norme HTTP.

Option 2

Le client envoie une demande PUT avec un en Content-Length tête Content-Length de 0 octet et aucun corps, le serveur peut alors renvoyer un 308 Resume Incomplete (comme proposé ici http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal ) ou un en-tête 202 Accepted pour indiquer s’il faut reprendre ou recommencer depuis le début. Cela semble également acceptable en dehors de l’utilisation d’un en-tête non standard.

D’autres suggestions sur la meilleure façon de mettre en œuvre cela?

Merci J

Dans les deux solutions, il n’existe pas d’implémentations client et serveur, donc je suppose que vous coderez les deux. Je pense que vous devriez juste trouver un juste équilibre entre le plus simple et ce qui est décrit dans la proposition de Gears (en passant, vous savez probablement que Gears est mort), et être prêt à changer quand une norme apparaîtra.

Si je devais implémenter cette fonctionnalité, je permettrais au client de télécharger des morceaux et j’appendais un résumé de message sur tout le contenu et les morceaux.