Possibilité de suspendre / reprendre téléchargement

Eléphanteau du PHP | 31 Messages

05 oct. 2011, 19:46

Bonjour à tous,

J'ai un espace client sur lequel je propose le téléchargement de fichiers, pour cela rien de plus simple j'utilise :
header("Content-disposition: attachment; filename=$fichier");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/octet-stream\n");

header("Content-Length: $size");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");

readfile($url);
Le seule problème avec cette méthode, si un utilisateur met le téléchargement en pause, si il essaye de reprendre sa foire.. étant donnée que les entête sont de nouveau envoyés.

Je viens donc vers vous pour m'aider à faire en sorte que celui ci puisse accepter de reprendre les téléchargements suspendu, car les seule solutions trouvés jusqu'ici nécessite l'utilisation de fonctions tel que fopen, fseek et fclose etc qui n'accepte pas la lecture de fichier se trouvant dans un milieu externe (sur une autre machine).

Merci par avance pour vos aides et conseils.

Eléphanteau du PHP | 31 Messages

07 oct. 2011, 04:07

UP, pas d'idées ? au moins une piste à suivre ? :?

Eléphant du PHP | 121 Messages

14 oct. 2011, 15:29

Les intervalles permettent aux navigateurs de demander des parties d'un document. Cela permet de reprendre un transfert interrompu, ou d'obtenir une part d'un long document. Les intervalles sont implémentées aux travers de l'entête "Range", par exemple pour demander les deuxièmes 500 octets d'un document, la requête inclurait:

Code : Tout sélectionner

Range: bytes=500-999
Une même requête peut demander plusieurs intervalles à la fois (par exemple les premiers et les derniers 500 octets d'un fichier), dans ce cas la réponse du serveur utilise le type MIME "multipart" avec une partie par intervalle.

Tu peux lire l'article Range Requests and Partial Responses pour plus d'informations.

Attention quand même, c'est un sacré boulot à mettre en place.

Eléphanteau du PHP | 31 Messages

23 oct. 2011, 22:17

Oui sa j'ai bien vu, mais le problème c'est est-ce possible avec un fichier se trouvant sur un serveur distant ?