Php: fichier en chargement

Bonjour,
j’ai fait un petit site en php, et je voudrai mettre à disposition des utilisateurs des formulaires en pdf à télécharger.

J’ai fait des recherches google, mais je n’arrive pas à trouver des réponses pertinentes.
Que me conseillez vous ?

Utilise un client FTP :laughing:

Je ne comprends pas où est ton problème ? Tu veut créer un PDF formulaire et tu sais pas quel outil il te faut ?

C’est pour des utilisateurs basique d’internet. Je veux leur faire une icone à cliquer pour télécharger un fichier pdf (inscription à une manifestation sportive)
Si je pouvais faire ça directement en xhtml et css ce serai encore mieux.
Je n’ai aucun javascript sur le site, et ne souhaite pas en rajouter.

[quote=“piratebab”]Bonjour,
j’ai fait un petit site en php, et je voudrai mettre à disposition des utilisateurs des formulaires en pdf à télécharger.

J’ai fait des recherches google, mais je n’arrive pas à trouver des réponses pertinentes.
Que me conseillez vous ?[/quote]
Salut,
Je ne suis pas un spécialiste, mais un lien vers un répertoire (autorisé et sans index.html) ou se trouve le fichier ne suffirait pas ? :wink:

Euhh, j’avoue avoir du mal à comprendre la question.

Si tu veut leurs proposer en télechargement tes fichiers PDF tu fait un lien hypertexte vers eux, et il pourrons être télechargé (Il faut bien sur que tes PDF soit sur un serveur FTP ou dans le dossier ou sont tes pages web

Mais il est possible que le navigateur ouvre les PDF dans le navigateur.

Au pire fait toi même le formulaire en HTML, et tu te fait envoyer le tout par e-mail…

J’ai un peu cherché, voici ce que j’ai trouvé :

<? $filename = "Rockwool_img.gif"; $chemin = "../../images/"; ?> <a href='download.php?chemin=<?=$chemin?>&filename=<?=$filename?>'>Cliquer ici</a>
et dans un fichier download.php ecrire ce qui suit:

<? header("Content-type: application/force-download" ); header("Content-Disposition: attachment; filename=".$filename); readfile($chemin.$filename); ?>
J’ai testé, mais quand je clique je télécharge “download.php” :laughing: Je dois mal m’y prendre… :mrgreen:

En tout cas ça à l’air de fonctionner ! :smt006

EDIT : Et ce code là télécharge la page affichée en fichier pdf…

[code]<?php
// Vous voulez afficher un pdf
header(‘Content-type: application/pdf’);

// Il sera nommé downloaded.pdf
header(‘Content-Disposition: attachment; filename=“downloaded.pdf”’);

// Le source du PDF original.pdf
readfile(‘original.pdf’);
?>
[/code]

C’est si compliqué ?

Pas la peine de recoder HTTP tu as déjà un serveur qui le gère très bien.

[quote=“MisterFreez”]C’est si compliqué ?

Pas la peine de recoder HTTP tu as déjà un serveur qui le gère très bien.[/quote]
Pour moi ça l’est… :wink:

Bon, mais là, ton code ouvre un fichier PDF, il ne force pas le téléchargement…
Mais moi, je ne sais pas faire !

Tu peut pas le forcer après c’est l’utilisateur qui a mis un plugin dans son navigateur ou pas.

Je teste ça dans la soirée, merci!
Je pensai que c’était plus compliqué que ça!

On peut pas réfléchir pour l’utilisateur, car si on doit prendre en considération toute les possibilités de l’internaute (navigateur, javascript …) la programmation web devient un vrai casse tête :smt021
En même temps c’est comme ça que l’on vois la qualité d’un site web, parceque le flash tout beau qui bug sous iceweasel :smt005

Ok je sort :arrow_right:

J’avais un peu oublié ce sujet…
Michel, je ne souhaite forcer personne :laughing:
Je souhaite juste qu’une boite de dialogue s’ouvre et propose le téléchargement !
Je ne vois pas pourquoi tu ne pourrais pas “forcer” le démarrage du téléchargement ?

Sur certains sites, tu clique, et il ouvre le fichier dans une autres page (c’est ce que tu propose) sur d’autres sites le même clique lance le téléchargement (enfin, propose le téléchargement pour être plus exact…).
Effectivement si c’est un js est que tu as ‘noscript’, rien ne se passe… Je suppose que ça doit pouvoir se faire sans js ?

Mais tu peux forcer l’ouverture d’une boite de dialogue proposant le téléchargement non ? Je divague :confused:

Ça je l’ai jamais vu. Si tu as un exemple je veux bien voir en regardant les entêtes HTTP on pourrais voir ce qui change.

De ce que j’en sais, le protocole HTTP ne fais que transmettre des fichiers « bêtement ». Il indique quel est le type du fichier et 3 trucs en plus. Après le navigateur cherche s’il est capable de le lire (typiquement une page HTML, XHTML, les images gif, jpeg, png,…), puis il regarde s’il a un plugin pour le lire (typiquement flash ou pdf) et enfin si rien n’a marché il le télécharge.

D’ailleurs ça me donne une idée, si tu définis toi même le type de fichier avec la fonction header() et que tu met plus ou moins n’importe quoi le fichier seras téléchargé. Mais le navigateur ne proposeras pas de le lire avec un lecteur PDF externe non plus.

Salut,
Merci de répondre…

Par exemple ce code :

<ul><li><b>1.</b> Téléchargez <a href='http://dl1.avgate.net/down/vdf/ivdf_fusebundle_nt_en.zip' target='_blank'>ivdf_fusebundle_nt_en.zip</a> (ou encore <a href='http://dl2.avgate.net/down/vdf/ivdf_fusebundle_nt_en.zip' target='_blank'>là</a>)
Sur cette page : (je deteste ce site…mais bon) commentcamarche.net/faq/suje … n-internet

J’ai bien un programme qui peux lire les fichiers zip, mais il ouvre une boite me proposant :
soit de l’ouvrir avec… (Ark chez moi)
soit de le télécharger avec DownThemAll (extension IW)
soit de l’enregistrer sur ma machine

Je suppose que ça fonctionne avec n’importe quel fichier non ?
Est-ce “target=’_blank’” qui “force” le téléchargement ou c’est simplement pour ouvrir une page vide ?

target=“machin” c’est pour dire de l’ouvrir dans la page machin. Ça permet d’ouvrir dans une autre page, par exemple.
Ton navigateur n’a pas de plugin pour le zip j’imagine :question:
Voici un exemple :
michel.barret5.free.fr/blog/coucou.html

Re,

[quote=“MisterFreez”]target=“machin” c’est pour dire de l’ouvrir dans la page machin. Ça permet d’ouvrir dans une autre page, par exemple.
Ton navigateur n’a pas de plugin pour le zip j’imagine :question:[/quote]

Tu imagine bien… Pourquoi faire :laughing:
Je télécharge et ensuite je “dézippe”.
Par prudence il faudrait peut-être regarder dans l’archive avant de la télécharger… J’avoue ne pas le faire…

Donc d’après toi pas moyen de “forcer” le téléchargement si le navigateur possède le plugin (ou module ou extension ou simplement la capacité) permettant d’ouvrir le fichier demandé ?

Il me semble ouai.

Bien, je suis déçu alors… :wink:
Je n’avais jamais fait le lien… :confused:

Merci de ta patience… :smt006

En fait si tu réfléchis bien. Si tu installe un plugin PDF c’est pour ne plus les télécharger. Charge au navigateur de rediriger tout les PDF vers ce plugin.

Note que tu peux faire croire au navigateur que le fichier que tu veux forcer à télécharger est un fichier zip car, comme on peut le remarquer, un plugin pour le zip, c’est pas courant.

Il faut à ce moment là passer par le .htaccess:

ou, par exemple si tu as un répertoire où sont contenus tous tes fichiers devant être téléchargés ( et rien d’autre)

Ce qui va lui dire tout dans ce dossier est un zip! Et lui va donc le télécharger.

EDIT: attention, le .htaccess doit être dans le répertoire voulu, pas à la racine.