Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script de telechargement qui ne tele charge pas tout !

12 réponses
Avatar
Vincent Verdon
Bonjour,

plutôt débutant en php (ma langue naturelle est le TCL ;-) ), je bute
sur un problème gênant :
j'ai créé un ensemble (modeste) de scripts dont le but est de gérer
l'accès à des répertoires sur un serveur web. Il s'agit en fait d'une
zone de téléchargement qui n'est pas en accès libre mais nécessite
d'être authentifié au préalable. Cette authentification est faite en
amont depuis un CMS (en l'occurence SPIP). Le pb est que certaines
personnes connectées ne perviennet pas à télécharger l'intégralité des
fichiers qu'elles souhaitent : les fichier se trouvent ainsi corrompus.
Je ne comprends pas pourquoi, et je n'ai jamais eu personnellement ce
problème quand je fais des essais ! Je suppose donc plusieurs choses :
1) C'est lié à l'OS de l'utilisateur (perso, j'utilise Linux) ;
2) C'est lié au fournisseur d'accès : le script est sur un site hébergé
chez Free et je suis moi-même chez Free.
3) Je programme bien mal, ce qui est fort possible.

Voici le morceau de script qui provoque le téléchargement. Vous
constaterez que j'ai essayé 2 fonctions différentes fpassthru et
readfile, mais cela donne le même résultat... Au passsage, j'ai
l'impression qu'en PHP il y a beaucoup de fonctions différentes qui
permettent d'arriver au résultat voulu : ça va être long à apprendre
tout ça !

--------------------
// on récupère les infos sur le fichier et on crée l'entête
$taille = filesize($fic);
$type_mime = def_mime_type($fic);
$f_nom = basename($fic);

//on ecrit l'entete
header('Content-Type: '.$type_mime);
header('Content-Length: '.$taille);
header('Content-Disposition: attachment; filename='.$f_nom);
header('Content-Transfer-Encoding: binary');

// on ouvre le fichier en lecture en mode binaire
//$file = @ fopen($fic, 'rb');
//if ($file) {
// on envoie le fichier
// fpassthru($file);
// on ecrit le log d'accès
// ecrire_log("acces au fichier $_GET[fic]");
//} else {
// echo "Il y a eu une erreur de chargement" ;
// ecrire_log("echec de l'acces au fichier $_GET[fic]");
//}

if(readfile("$fic")) {
ecrire_log("acces au fichier $_GET[fic]");
} else {
ecrire_log("echec de l'acces au fichier $_GET[fic]");
}
--------------------


Merci de votre aide
--
Amicalement, Vincent Verdon

2 réponses

1 2
Avatar
Christophe Bachmann
Le 03/09/2010 00:52, Vincent Verdon a écrit :
Bonsoir,

Le problème semble bien être celui que j'avais imaginé : Free limite le
téléchargement en php s'il n'est pas notre fournisseur d'accès.



Est-ce spécifique à PHP ou est-ce un délai limite. Je sais que la
vitesse de transfert du service de téléchargement Free est très
inférieure quand on n'est pas sur leurs lignes, ce qui pourrait causer
un time-out.
--
Greetings, Salutations,
Guiraud Belissen, Château du Ciel, Drachenwald,
Chris CII, Rennes, France
Avatar
Vincent Verdon
Bonsoir,

Le 03/09/2010 11:59, Christophe Bachmann a écrit :
Le 03/09/2010 00:52, Vincent Verdon a écrit :
Bonsoir,

Le problème semble bien être celui que j'avais imaginé : Free limite le
téléchargement en php s'il n'est pas notre fournisseur d'accès.



Est-ce spécifique à PHP ou est-ce un délai limite. Je sais que la
vitesse de transfert du service de téléchargement Free est très
inférieure quand on n'est pas sur leurs lignes, ce qui pourrait causer
un time-out.



Pas au bout de 10 ou 20 s quand même.
De toute façon, que puis-je y faire ?


--
Amicalement, Vincent Verdon
1 2