Lien vers des fichiers ailleurs sur le serveur

rafmos
Invité n'ayant pas de compte PHPfrance

22 oct. 2012, 15:31

Bonjour,

J'aimerais pouvoir faire télécharger des fichiers aux visiteurs de mon site. Le problème est que ces fichiers ne se trouvent pas dans le répertoire du service Web (chez moi : C:\xampp\htdocs) mais ailleurs sur le serveur. Le serveur tourne sous Windows Server 2008.

Est-ce que quelqu'un a une idée comment faire ?

Merci beaucoup d'avance !

rafmos
Invité n'ayant pas de compte PHPfrance

22 oct. 2012, 16:08

...Et il faudrait pouvoir faire que le fichier s'ouvre chez le client sans lien href (faudrait trouver quelque-chose en php), car l'accès aux fichiers est géré par php. Si les fichiers sont accessible avec un simple lien href, ce ne sera d'après moi pas sécurisé !

Merci d'avance !

Petit nouveau ! | 2 Messages

24 oct. 2012, 09:13

Up ! :)

Eléphanteau du PHP | 40 Messages

24 oct. 2012, 10:06

Comment tu procède pour envoyer le fichier sur ton serveur?
Tu veut que seul t'es client puisse télécharger?

saian
Invité n'ayant pas de compte PHPfrance

24 oct. 2012, 11:52

Salut, il faut que tu mettes en place une page prenant en paramètre le fichier à télécharger.
Dans cette page tu fais les testes de sécurité pour savoir si l'utilisateur a le droit ou pas de télécharger le fichier.
S'il a les droits alors tu envoies le contenu du fichier (avec un echo file_get_contents par exemple) en envoyant au préalable la bonne entête à l'aide de la fonction header (nom du fichier et type de fichier).

Petit nouveau ! | 2 Messages

24 oct. 2012, 12:15

Merci beaucoup !!!! Cela fonctionne ! Je n'ai pas utilisé "file_get_contents", mais "readfile".

Voici mon code après les vérifications de sécurité :
header("Content-disposition: attachment; filename=".utf8_decode($nomfichier));
header("Content-type: application/octet-stream");
readfile (utf8_decode($repertoire.$nomfichier));
Cela fonctionne bien, sauf pour les url distantes. Mais comme je ne sais pas encore exactement si les url distantes seront nécessaires, on laisse pour l'instant comme ça. ;)

Encore merci !