Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2007, 22h12   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Par défaut Nom par défaut pour le téléchargement de fichier

Bonjour,

Voici en deux mots la situation:
Je développe actuellement un intranet dans lequel nous mettons à disposition de l'utilisateur, des documents PDF.
l'arborescence est la suivante :
Code :
1
2
3
4
5
 
   |
   |_ Dev
   |_ Prod
   |_ Dossier PDF
Les url de développement et de production pointent respectivement sur les dossier Dev et Prod.
Le dossier contenant les PDF n'étant donc pas sous la racine, je ne peux faire de lien directe.
Le but premier est de permettre la visualisation des PDF, et au besoin de les télécharger.

Pour la visualisation, aucun soucis. J'utilise la fonction PHP 'readfile()', avec un header(' Content-type: application/pdf').
Mon problème vient lorsque l'on veut télécharger le fichier.
Le nom qui est par défaut, est l'url de la page PHP qui ouvre le fichier. C'est un peu logique en soi, mais il serait mieux que ce soit le nom du fichier qui s'y retrouve.
Seulement, je ne trouve pas comment lui passer cette information. Je n'ai pas trouvé de header qui corresponde à ça, ni d'autre fonction PHP qui ferait ceci.

Le seul header permettant de nommer le fichier, que j'ai trouvé est
'Content-Disposition: attachement; filename= ...'
Mais il force le téléchargement, ce qui ne me convient pas.

Je solicite donc votre connaissance sans doute plus avancée que la mienne pour ceci

Merci d'avance

L'intranet tourne sur un serveur Linux, avec PHP 5.2 et est développé avec le Framework de Zend.
Xilhion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 12h38   #2
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Code :
1
2
3
4
5
6
7
<?php
header('Content-type: application/pdf');
// le fichier sera nommé downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// Le source du PDF original.pdf
readfile('original.pdf');
?>
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 13h40   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par Xilhion Voir le message
Le seul header permettant de nommer le fichier, que j'ai trouvé est
'Content-Disposition: attachement; filename= ...'
Mais il force le téléchargement, ce qui ne me convient pas.
Je ne souhaite pas que le téléchargement soit imposé
L'utilisation première est la visualisation des PDF.
Mais si l'url se retrouve comme nom par défaut lors du téléchargement, ce n'est pas très 'user friendly' ...

Pas moyen de trouver un header qui a cette fonction sans forcer le téléchargement.

Je sèche un peu là... :/
Xilhion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 14h10   #4
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Tu peux toujours faire un lien ver le fichier à télécharger. tu mettras tout simplement le trajet absolu..........
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 14h35   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par acirfa Voir le message
Tu peux toujours faire un lien ver le fichier à télécharger. tu mettra tout simplement le trajet absolu..........
J'ai pas vraiment saisi ce que tu propose
Sachant que je ne peux pas faire de lien HTML, puisque les fichiers ne sont pas sous la racine.
Xilhion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 16h05   #6
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Ils sont ou tes fichiers? il ya un chemin pour y acceder non?sinon tu les copies dans un repertoire sur le serveur en utilisant copy() ou rename().
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 16h26   #7
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par acirfa
Ils sont ou tes fichiers?
Citation:
Envoyé par Xilhion Voir le message
l'arborescence est la suivante :
Code :
1
2
3
4
5
 
   |
   |_ Dev    (scripts PHP en cours de développement)
   |_ Prod   (scripts PHP mis en production, utilisés)
   |_ Dossier PDF  (Documents PDF)
Les url de développement et de production pointent respectivement sur les dossier Dev et Prod.
Citation:
Envoyé par acirfa
il ya un chemin pour y acceder non?
Pour y accéder, il faut remonter d'un dossier ('../') puisqu'ils sont au dessus de la racine.
Donc, c'est accessible par un chemin en PHP, mais pas en HTML/Javascript.

Un copy(), suivi d'un redirect pourrait être une solution, mais alors je ne vois pas trop comment gérer la suppression automatique. Si tu avais un éclaircissement sur ce point ça serait pas mal

(Mon code PHP, au cas où il est nécessaire de le préciser : )
Code :
1
2
3
4
5
6
7
$file = $_GET['file'];
$file = '../Doc Pdf'.$file;
$filename = ereg_replace('.*/','',$file);
header('Content-type: application/pdf');
header('Content-Disposition:inline; filename="'.$filename.'" size='.filesize($file));
header('Pragma: no-cache');
readfile($file);
Xilhion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h33.


 
 
 
 
Partenaires

Hébergement Web