Pb de téléchargement

Signaler
Messages postés
16
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
24 mai 2007
-
Messages postés
16
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
24 mai 2007
-
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?

5 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
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 ?
Messages postés
16
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

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);


?>

Contenu du fichier mime.ini

[microsoft]
doc = application/msword
rtf = application/msword
xls = application/excel
pps = application/vnd.ms-powerpoint
ppt = application/vnd.ms-powerpoint


[adobe]
pdf = application/pdf
ai = application/postscript
eps = application/postscript
psd = image/psd


 


Le passage de paramètre ce fait de la facon suivante


[essai.php?doc=serveur\g---drhu\demande de stage.xls test]
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Pour mieux diagnostiquer l'erreur, il faudrait peut-être que tu fasses un peu plus de contrôles à ce niveau là...

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é ?
Messages postés
16
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

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.
Messages postés
16
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

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.

merci pour votre aide.