Télécharger avec un lien download.php?id=

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Télécharger avec un lien download.php?id=

par Nico128 » 12 févr. 2006, 17:32

Oh finalement j'ai fait d'une autre manière. Elle est peut être moin bien, mais au moin elle marche.

Au lieu d'utiliser le header() j'utilise une iframe qui est invisible.

par Nico128 » 12 févr. 2006, 17:17

Au départ j'avais fait une url avec id pour selectioner un fichier dans la base de donné.

Mais après pour essayé de voir d'ou vient le problème j'ai simplement faire une page "dl2.php" avec comme contenue dedant :
$filename = '4111.jpg';
$chemin = '../../../fiches-jeux/images-jaquettes-etiquettes/etiquettes-ngc/Metal-Gear-Solid-The-Twin-S.gif';

header('Content-disposition: attachment; filename='.$filename);
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: fichier');  
header('Content-Length: '.filesize($chemin));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($chemin);
l'url est http://www.legend-nintendo.com/download ... pt/dl2.php

Avec mozila ca télécharge bien l'image. Avec IE ça essaye de télécharger la page. Mais après avoir mis "télécharger" un message d'erreur intervient et ferme la boite de dialogue.

par Cyrano » 12 févr. 2006, 17:12

À quoi ressemble l'url type en question ?

par Nico128 » 12 févr. 2006, 17:07

Ok.

Par contre avec IE ça ne marche toujours pas :? On me propose de télécharger la page. Mais avec Mozila, tout marche !

par Cyrano » 12 févr. 2006, 17:01

Que toi tu préfères un espace, c'est une chose, mais pour le navigateur, ça donne une url invalide et dans ton code, ça crée une rupture intempestive dans la chaine.

par Nico128 » 12 févr. 2006, 16:32

Merci de m'avoir répondu.

Mais enfaite ce que je veux, cest ne pas afficher de %20 dans le nom du fichier, je préférerais un espace.

Et avec IE, je comprend toujours pas pourquoi ça ne télécharge pas le fichier...

par Cyrano » 12 févr. 2006, 16:25

Avec un str_replace sur le nom du fichier:
$nom_fichier = str_replace(" ", "%20", $nom_fichier);

Télécharger avec un lien download.php?id=

par Nico128 » 12 févr. 2006, 16:19

Salut à tous !

J'ai fait un script pour pouvoir télécharger avec un lien de ce genre : download.php?id=x

Mais le problème, c'est que si le fichier a un espace, le nom du fichier sera coupé a cet espace. Le fichier sera bien téléchargement, mais cest juste son nom qui sera pas en entier, et cela me dérange.

Voilà la partie qui force a télécharger le fichier :
header('Content-disposition: attachment; filename='.$filename);
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: fichier');  
header('Content-Length: '.filesize($chemin));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($chemin);
Quand je fais un echo sur $filename j'obtien bien le nom du fichier en entier.

Et je viens de remarqué avec IE ce qui se télécharge est download.php?id=x et ca mets erreur quand jessaye de le télecharger.

Alors comment faire ?

Merci d'avance