IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] Les fonctions is_dir, opendir et readdir


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 52
    Points
    52
    Par défaut [CSV] Les fonctions is_dir, opendir et readdir
    Bonjour,

    Je voudrais qu'un internaute logué dans ma partie admin puisse télécharger des photos contenue dans un répertoire situé sur son poste en local.

    J'ai un script qui fonctionne seulement pour les répertoires situés sur le serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Ajoute / à la fin du chemin du répertoire si manquant
    if (substr($FilesFolder, -1) != "/") 
      $FilesFolder = $FilesFolder."/";
     
     
    // Vérifie que le chemin correspond bien à un répertoire
    if (!is_dir($FilesFolder)) 
    {
      echo "ERROR1";
      return;
    }
     
    $handle = opendir($FilesFolder);
    if ($handle == 0)
    {
      echo "ERROR2";
      return;
    }
    // Saute le . et le ..
    readdir($handle);
    readdir($handle);
    // Parcours les images
    while (($fichier = readdir($handle)) !== false)
    {	     
      // Copie les images du repertoire temporaire vers le répertoire images 
      if (!copy($FilesFolder.$fichier, "../Images/".$RubriqueName."/".$fichier))
      {
        echo "ERROR3";
      }
    En local pas de problème. Les fonctions is_dir, opendir et readdir sont elles utilisable dans le cas ou le répertoire est sur le poste client et non sur le serveur ?

    Sinon comment uploader en gardant ce système ?

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Je voudrais qu'un internaute logué dans ma partie admin puisse télécharger des photos contenue dans un répertoire situé sur son poste en local.
    Si je prend au mot je comprend "qu'il puisse télécharger des images déjà sur son pc"

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    oui voila. Il est possible de télécharger un dossier d'un coup ?

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    pour uploader à partir d'un formulaire un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="file" name="f_image"/>
    // gérer le fichier
    $_FILES['f_image']['tmp_name']
    par ce biais là tu ne peux pas uploader un dossier directement.


    tu peux toujours proposer plus d'un input file :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <input type="file" name="f_image[]" id="image_1"/>
    <input type="file" name="f_image[]" id="image_2"/>
     
     foreach($_FILES['f_image']['tmp_name'] as $key => $tmp_name)
     {
          if(!empty($tmp_name)) 
          {
              // ...traitement
          }
     }
    Zend PHP5 Certification
    MySQL 4 Core Certification

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    Merci. J'ai fais plusieurs type=file et le résultat est satisfaisant.

    Maintenant au lieu de faire de l'upload, je voudrais faire du download. Le php gère cette fonctionnalité ?

  6. #6
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    En utilisant la fonction header. Par contre aucun n'affichage ne doit précéder cette fonction. (ou bien l'utilisation de fonction tel que : ob_start() et ob_clean() sont requis)

    pour te donner une idée ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function envoyerFichier($path, $nomfichier, $type)
          {
             if(file_exists($path))
             {  
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header('Content-Description: File Transfer');
                header('Content-type: \''.$type.'\'');
                header('Content-Disposition: attachment; filename="'.$nomfichier.'"');
                readfile($path);
     
             }
          }
    Zend PHP5 Certification
    MySQL 4 Core Certification

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    Merci. J'ai se qu'il me faut.

    Si quelqu'un a besoin de ce code plus tard. Le fichier est généré est un csv.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $resQuery = mysql_query("SELECT * FROM table");
     
    header("Content-Type: application/csv-tab-delimited-table");
    header("Content-disposition: filename=Resultats.csv");
     
    if (mysql_num_rows($resQuery) != 0) {
      // titre des colonnes
      $fields = mysql_num_fields($resQuery);
      $i = 0;
      while ($i < $fields) {
        echo mysql_field_name($resQuery, $i).";";
        $i++;
      }
      echo "\n";
     
      // données de la table
      while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
       foreach($arrSelect as $elem) {
        echo "$elem;";
       }
       echo "\n";
      }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  2. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58
  3. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  4. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo