aidam
Messages postés16Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention24 mai 2007
-
11 mai 2007 à 14:35
aidam
Messages postés16Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention24 mai 2007
-
24 mai 2007 à 09:18
Bonjour,
Voila ma situation j'ai fait un site intranet qui permet de télécharger des documents. le téléchargement ce passe bien losque les document sont sur le meme serveur que le site cependant dans mon cas la plus par des documents sont sur un deuxième serveur.
j'ai essayer de revenir jusqu'a la racine puis de mettre l'adresse du serveur suivit du chemin vers le fichier mais ca n'a pas fonctionner.
Quelqu'un a une idée sur comment le faire? et pourquoi ca na pas fonctionner?
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 mai 2007 à 14:51
Salut,
Tu n'obtiendras pas d'aide si tu n'en dis pas plus :
- qu'est-ce qui ne fonctionne pas, précisément ?
- que ce passe-t-il exactement (ou que ne se passe-t-il pas) ?
- y a-t-il un message d'erreur ? Si oui, lequel ?
- a quoi ressemble ton code ? A quoi ressemblent les url ?
Es-tu sûr qu'il s'agisse de php et pas de code HTML ?
aidam
Messages postés16Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention24 mai 2007 14 mai 2007 à 08:18
salut,
Voila ce qu'il ce passe dans le cas ou je vais chercher sur le deuxième serveur, il crée un fichier vide du nom indiqué, le contenu est donc oublier, j'en déduis qu'il n'est pas ouvert. Lorsque le document est télécharger à partir du meme serveur que l'endroit ou est le site le fichier est complet avec son contenu.
Je n'ai pas de message d'erreur.
Voici le code des fonction réaliser en php mise dans une page nommée essai.php
<?php
//Pour télécharger les fichiers
function typeMime($nomFichier)
/* retourne le type MIME à partir de l'extension de fichier contenu dans $nomFichierExemple : $nomFichier "fichier.pdf"> type renvoyé : "application/pdf" */
{
// on détecte d'abord le navigateur, ça nous servira plus tard
if(preg_match("@Opera(/| )([0-9].[0-9]{1,2})@", $_SERVER['HTTP_USER_AGENT'], $resultats))
$navigateur="Opera";
else if(preg_match("@MSIE ([0-9].[0-9]{1,2})@", $_SERVER['HTTP_USER_AGENT'], $resultats))
$navigateur="Internet Explorer";
else $navigateur="Mozilla";
// on récupère la liste des extensions de fichiers et leurs types Mime associés
$mime=parse_ini_file("mime.ini");
$extension=substr($nomFichier, strrpos($nomFichier, ".")+1);
/* on affecte le type Mime si on a trouvé l'extension sinon le type par défaut (un flux d'octets).
Attention : Internet Explorer et Opera ne supporte pas le type MIME standard */
if(array_key_exists($extension, $mime)) $type=$mime[$extension];
else $type=($navigateur!="Mozilla") ? 'application/octetstream' : 'application/octet-stream';
return $type;
}
/**
* Télécharge le contenu d'un fichier sur le client de l'internaute, avec le nom spécifié.
*
* @param string $contenuFichier Le contenu du fichier à télécharger
* (obtenu avec file_get_contents() par exemple).
* @param string $nomFichier Nom du fichier qui sera proposé par défaut à l'internaute.
*/
function telechargerFichier($contenuFichier, $nomFichier)
{
// on détermine le type MIME du fichier
$typeFichier=typeMime($nomFichier);
// envoi des en-têtes nécessaires au navigateur
header('Content-Type: '.$typeFichier);
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
// il ne reste plus qu'à envoyer le contenu du fichier
echo $contenuFichier;
}
$nom = $_GET['doc'];
telechargerFichier(file_get_contents($nom), $nom);
Si file_get_contents rencontre une erreur, quelle qu'elle soit, la fonction retourne FALSE. Là, tu ne peux pas le savoir ni gérer l'erreur.
Questions basiques, mais nécessaires :
- le fichier est-il bien au bon endroit ?
- est-ce que ton serveur est configuré pour ouvrir les fichiers distants avec les fonctions fopen, readfile, file_get_contents, etc ?
- as-tu vérifié que l'URL est correcte et pointe bien vers le fichier demandé ?
aidam
Messages postés16Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention24 mai 2007 14 mai 2007 à 15:57
merci pour ton aide
en ce qui concerne le fichier je suis sur qu'il est présent à cette endroit.
pour l'URL c'est le chemin qui va jusqu'au fichier à partir du nom du serveur, j'ai meme essayer avec l'adrees IP du serveur mais ca ne marche pas mieux. Faut il d'abors retourner à la racine du premier serveur?
par contre je ne sai pas comment savoir si le serveur est configuré pour ouvrir les fichiers distants.
Vous n’avez pas trouvé la réponse que vous recherchez ?
aidam
Messages postés16Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention24 mai 2007 24 mai 2007 à 09:18
Salut
J'ai résolu mon probleme, il n'y avais pas de serveur web à l'endroit ou était situé les documents donc il fallais que je passe par une étape intermédiaire tel que :
- télécharge sur le serveur contenant le site dans un fichier temporaire
- ensuite le télécharger vers le poste client.