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

Pb telechargement de fichier avec PHP

5 réponses
Avatar
Christophe
Salut a tous,

J'ai un script qui permet de télécharger des fichiers (n'importe quel type
de fichier), le problème est que le téléchargement s'arrête avant que toutes
les données soit transmissent (sur un fichier de 60 mo j'ai que 20 mo par
exemple, et quelque fois il me manque que quelque ko), et il n'y as pas de
pb quand je télécharge un fichier en direct sans passer par PHP

Voici mon script :

....free.fr/systeme/download.php?path=./Photos/2007-02-24.zip

download.php:
<?
include'configuration.php';
include'log.php';
$path=urldecode($path);
if(strtolower(substr(strrchr(basename($path),'.'),1))=='php')$path="";
header("Content-disposition: attachment; filename=".basename("$path"));
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary\n");
header("Content-Length: ".filesize("../$path"));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile("../$path");
?>

pour info mon site est chez free


Merci pour votre aide.


Chris

5 réponses

Avatar
Thierry
"Christophe" a écrit dans le
message de news: 45e5a1e4$0$28546$
Salut a tous,

J'ai un script qui permet de télécharger des fichiers (n'importe quel type
de fichier), le problème est que le téléchargement s'arrête avant que
toutes les données soit transmissent (sur un fichier de 60 mo j'ai que 20
mo par exemple, et quelque fois il me manque que quelque ko), et il n'y as
pas de pb quand je télécharge un fichier en direct sans passer par PHP


Ca marche avec des petits fichiers ?
Regarde a la fin de ton fichier de 20Mo si il n'y pas une erreur PHP
relative au timeout.
Si c'est le cas, rien a faire, ce n'est pas possible de changer le timeout
chez Free.

Avatar
P'tit Marcel
Voici mon script :
.....free.fr/systeme/download.php?path=./Photos/2007-02-24.zip


Le protocole http n'est pas fait pour télécharger 60Mo. Il faudrait
plutôt employer ftp (éventuellement grâce à du flash sur le client mais
je ne connais pas trop). Tu devrais également sécuriser ton script en :


download.php:
<?
include './securise/configuration.php';
include './securise/log.php';


où securise est un répertoire protégé par un fichier htaccess.
Attention, il me semble que free impose une syntaxe inhabituelle pour
les htaccess.


eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
Christophe
"Thierry" a écrit dans le message de news:
45e5b1ba$0$28541$
"Christophe" a écrit dans
le message de news: 45e5a1e4$0$28546$
Salut a tous,

J'ai un script qui permet de télécharger des fichiers (n'importe quel
type de fichier), le problème est que le téléchargement s'arrête avant
que toutes les données soit transmissent (sur un fichier de 60 mo j'ai
que 20 mo par exemple, et quelque fois il me manque que quelque ko), et
il n'y as pas de pb quand je télécharge un fichier en direct sans passer
par PHP


Ca marche avec des petits fichiers ?
Regarde a la fin de ton fichier de 20Mo si il n'y pas une erreur PHP
relative au timeout.
Si c'est le cas, rien a faire, ce n'est pas possible de changer le timeout
chez Free.


Oui ca marche pour les petits fichiers (3 - 4 mo), non il n'y a pas d'erreur
php dans le fichier.


Avatar
davel_x
Salut a tous,

J'ai un script qui permet de télécharger des fichiers (n'importe quel type
de fichier), le problème est que le téléchargement s'arrête avant que toutes
les données soit transmissent (sur un fichier de 60 mo j'ai que 20 mo par
exemple, et quelque fois il me manque que quelque ko), et il n'y as pas de
pb quand je télécharge un fichier en direct sans passer par PHP


Juste au cas où, car ça m'est arrivé il y a peu, vérifie qu'il n'y ait
pas de compression gzip automatique des pages générées par PHP.
Si c'est le cas désactive la sur ce script en particulier.


--
**davel**
http://www.davel.fr/blog/

Avatar
thierry
pour le modérateur:
je ne sais pas s'il faut le publier
copie envoyée à l'auteur

pour l'auteur:
il se passe quoi avec ton script si on appelle:

....free.fr/systeme/download.php?path=./systeme/configuration.php+

pour se convaincre il faut faire un 'visualiser code source' sur la page
renvoyée.

il faudrait peut être ajouter un trim() dans ton test
if(strtolower(substr(strrchr(basename($path),'.'),1))=='php')$path="";


amicalement

thierry

PS: le code du test fait sur un wXPpro + apache 2.0 + php5
requête GET http://dev.local/test/test.php?path=config.php+
<?php
$path = $_REQUEST['path'];
$path = urldecode($path);
if (strtolower(substr(strrchr(basename($path),'.'),1))=='php') {
echo "canaille... PHP!!!";
exit;
}
echo $path."<hr />";
$i = readfile($path);
echo "<hr />$i";
?>


je récupère bien le contenu du fichier config.php