Page 1 sur 1

Lien vers des fichiers ailleurs sur le serveur

Posté : 22 oct. 2012, 15:31
par rafmos
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 !

Re: Lien vers des fichiers ailleurs sur le serveur

Posté : 22 oct. 2012, 16:08
par rafmos
...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 !

Re: Lien vers des fichiers ailleurs sur le serveur

Posté : 24 oct. 2012, 09:13
par rafmos
Up ! :)

Re: Lien vers des fichiers ailleurs sur le serveur

Posté : 24 oct. 2012, 10:06
par romuald
Comment tu procède pour envoyer le fichier sur ton serveur?
Tu veut que seul t'es client puisse télécharger?

Re: Lien vers des fichiers ailleurs sur le serveur

Posté : 24 oct. 2012, 11:52
par saian
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).

Re: Lien vers des fichiers ailleurs sur le serveur

Posté : 24 oct. 2012, 12:15
par rafmos
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 !