Pb pour forcer le telechagement

iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008 - 11 janv. 2008 à 13:56
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008 - 16 janv. 2008 à 18:30
Salut à tous!
J'ai fait un site pour l'école où je dois charger des fichiers que les utilisateurs peuvent télécharger. J'ai fait une page download.php qui force le téléchargement. J'arrive à télécharger les fichiers mais pas à les ouvrir.
Est-ce que quelqu'un pourrait m'aider?
Merci d'avance!

ma page upload qui se lance apres le formulaire :
    $tmp_name=$_FILES['fichier']['tmp_name'];
    $titre = $_FILES['fichier']['name'];
    $taille = $_FILES['fichier']['size'];
    $type = STRSTR($_FILES['fichier']['name'],".");
   
    $point=strrpos($titre,".");
    $titre=substr($titre,0,$point);
    $fichier = $_FILES['fichier']['name'];

ma page document :
    [dl.php?dl=<?php echo 'fichiers/'.$doc['doc_fichier']; ?> T&eacute;l&eacute;charger]</td>
    //$doc['doc_fichier'], c'est le nom du fichier avec extension

ma page download :
if(isset($_GET['dl'])){
    $fichier=$_GET['dl'];

    switch(strrchr(basename($fichier), ".")) {
        case ".gz": $type = "application/x-gzip"; break;
        case ".tgz": $type = "application/x-gzip"; break;
        case ".zip": $type = "application/zip"; break;
        case ".pdf": $type = "application/pdf"; break;
        case ".png": $type = "image/png"; break;
        case ".gif": $type = "image/gif"; break;
        case ".jpg": $type = "image/jpeg"; break;
        case ".txt": $type = "text/plain"; break;
        case ".htm": $type = "text/html"; break;
        case ".html": $type = "text/html"; break;
        default: $type = "application/octet-stream"; break;
        } 
    $fic=substr($fichier,9);  //retire le début du chemin pour prendre le nom
    header("Content-Transfer-Encoding: $type\n");
    header('Content-Disposition: attachment; filename="'.$fic.'"');
    header('Content-Length: '.filesize($fichier));
    readfile($fichier);
}

19 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 janv. 2008 à 14:54
Tu entends quoi par "mais pas à ées ouvrir"? Tu as un message d'erreur? rien ne se passe?

Tu ne penses pas que ce serait bêtement une histoire de répertoire ? Tu as essayé sans faire le substr sur $fic?

*****
noisy communication - wherever, be everywhere!
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
11 janv. 2008 à 16:01
J'ai essayé de modifier les répertoires et tout mais j'y arrve pas.
En fait, quand j'ouvre les fichiers, j'ai un message qui me dit que le fichier est endommagé.
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 janv. 2008 à 16:14
endommagé? Alors soit c'est une erreur de type, soit il est VRAIMENT endommagé au moment où tu l'uploades.... essaie peut-être de remplacer "Content-Transfert-Encoding" par "Content-type"

*****
noisy communication - wherever, be everywhere!
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
11 janv. 2008 à 17:06
Ca fait la même chose.
Je pense que ce n'est pas un probleme avec l'upload parce-que j'arrive à ouvrir les fichiers qui sont dans le dossier de fichiers uploadés.
En plus, quand je retire le move_upload et que je déplace le fichier manuellement ça ne passe pas non plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 janv. 2008 à 17:08
peut-être que c'est une question de droits chez ton hébergeur alors. Essaie de faire un chmod en uploadant à 755 par exemple

*****
noisy communication - wherever, be everywhere!
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
11 janv. 2008 à 17:26
Mon site n'est pas en ligne. Mes fichiers ne vont pas sur un serveur, ils vont seulement dans un dossier.
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 janv. 2008 à 18:18
"je déplace le fichier manuellement ça ne passe pas non plus" <-- Y a bien un problème là qui ne concerne pas PHP!

*****
noisy communication - wherever, be everywhere!
0
sws2007 Messages postés 79 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 19 janvier 2009
11 janv. 2008 à 18:30
iron tu peux faire la page de telechargement juste avec du html et ça marche tu cré un repertoire qui va contenir les documents sous forme de fichier zip puis tu fais un lien simple vers le fichier et quant tu execute la pge avec "easyphp" ça affiche une fenetre qui contient ouivrir telecharger ou annuler et surtout n'oublie pas d'executer la page avec le serveur locale come wamp ou easyphp
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 janv. 2008 à 18:48
Hello,

nan, t'as confondu
Content-Transfer-Encoding et Content-Type.
Content-Transfer-Encoding devrait être binary.
Et dans Content-Type du dois mettre le mime-type que tu testes dans ton switch.
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
11 janv. 2008 à 22:59
sws, en fait, c'est que mon prof m'a imposé cette methode.
Concernant les Content-Transfer-Encoding et Content-Type j'ai remodifié mais ça me fait toujours la même chose.
Maintenant, mon code donne ça:

header("Content-Type: $type");
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="'.$fichier.'"');
header('Content-Length: '.filesize('fichiers/'.$fichier));
readfile('fichiers/'.$fichier);

Là, $fichier prend le nom du fichier avec l'extension.
0
mwm11 Messages postés 9 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 09:40
alors avec cette methode t'as pas besoin ni de header ni de rien seulement de html je t'explique:
1)tu cré un repertoire;dans le dossier qui contient tes page web sous www de easy php;que tu nome téléchargement par exemlpe
2) tu mets tout document a telecharger dans le repertoire telechargement il doivent etre soit avec l'extension "zip","rar","xls","doc","pdf"
3)dans ta page html des lien vers les document contenu dans telechargement
exemple:[telechargement/Nero.zip cour musique ]
4)l'execution de la page html de se faire avec easy php sois avec une alias ou dans web local www
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 janv. 2008 à 09:42
Il parle de FORCER le téléchargement. Ta méthode ne fonctionnera pas avec des PDFs par exemple

*****
noisy communication - wherever, be everywhere!
0
mwm11 Messages postés 9 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 09:50
pour les pdf il doit les zippez
0
mwm11 Messages postés 9 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 09:51
pour les pdf et toute autre extension doivent être zippez
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 janv. 2008 à 09:53
excuse moi de dire ça comme ça, mais ta propsition est débile...

*****
noisy communication - wherever, be everywhere!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2008 à 18:55
@iron ian => chez moi, ton code fonctionne. Il doit y avoir un soucis de chemin, OU tes fichiers sont effectivement corrompus.

@mwm11 => tu es hors sujet là, ce n'est pas ce qu'il demande.
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
13 janv. 2008 à 07:05
Je vais essayer sur un autre ordi pour voir ce que ça donne.
Peut-être que ça vient du mien.
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
16 janv. 2008 à 17:11
J'ai essayé sur linux.
Quand j'ouvre le fichier, ça me dit que le nom du fichier indique qu'il est en pdf, alors que son contenu indique que c'est du type html.
0
iron ian Messages postés 13 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 janvier 2008
16 janv. 2008 à 18:30
J'ai trouvé le probleme.
C'était tout bête.
En fait, ça chargeait le doctype dans le fichier.
Merci pour votre aide.
0
Rejoignez-nous