Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2008, 18h00   #1
Membre à l'essai
 
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 21
Points : 21
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 :
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 ?
philou029 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 18h08   #2
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Citation:
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"
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 19h22   #3
Membre à l'essai
 
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 21
Points : 21
oui voila. Il est possible de télécharger un dossier d'un coup ?
philou029 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 19h30   #4
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
pour uploader à partir d'un formulaire un fichier :

Code :
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 :
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
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 11h11   #5
Membre à l'essai
 
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 21
Points : 21
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é ?
philou029 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 11h23   #6
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
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 :
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
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h52   #7
Membre à l'essai
 
Inscription : décembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 65
Points : 21
Points : 21
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 :
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";
  }
}
philou029 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h05.


 
 
 
 
Partenaires

Hébergement Web