Problème pour lire des fichiers dans un répertoire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème pour lire des fichiers dans un répertoire

par yesh » 06 oct. 2007, 12:55

pfiou php quoi !!!!!! grrr

enfin bon nickel mon problème est réglé merci!

par AB » 06 oct. 2007, 12:35

ou essaies la méthode de Tracker.

Attention cependant certains hébergeurs désactivent (ou désactivaient) la fonction pathinfo. Auquel cas il faut trouver un équivalent avec $_SERVER['DOCUMENT_ROOT']

Edit : bah y'a trop de monde en ce moment sur ce post pour une réponse pertinente. Peut-être que la suggestion de calimero serait suffisante, faut tester :lol:

par Calimero » 06 oct. 2007, 12:34

Merci pour votre aide.

Ca ne marche toujours pas

Code : Tout sélectionner

<?php $handle=opendir('test'); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $exif = exif_read_data ($file, 0, true); echo $exif[EXIF][DateTimeOriginal]; } } closedir($handle); ?>


Erreur :

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 7
Erreur classique à mon avis, il faut ajouter le répertoire où se trouve le fichier quand tu passes le chemin complet à ta fonction exif_read_data() .

Ce qui donne :
$exif = exif_read_data ('test/'.$file, 0, true);

par yesh » 06 oct. 2007, 12:29

Merci pour votre aide.

Ca ne marche toujours pas

Code : Tout sélectionner

<?php $handle=opendir('test'); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $exif = exif_read_data ($file, 0, true); echo $exif[EXIF][DateTimeOriginal]; } } closedir($handle); ?>


Erreur :

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 7

par Tracker » 06 oct. 2007, 12:28

ou
while ($file = readdir($list))
{
   if (!is_dir($file))
     if (in_array(strtolower(pathinfo($file, PATHINFO_EXTENSION)), array('jpeg', 'jpg')))
    {
       try {

Il n'y a peut-être pas que les dossiers '.' et '..' dans son dossier de recherche

par AB » 06 oct. 2007, 12:22

Pour filtrer les . et ..

while ($file = readdir($list))
{

if ($file != "." && $file != "..") //cf doc readdir()

{

par Calimero » 06 oct. 2007, 12:21

je ne crois pas que c'est ça le problème. il n'y a que des *.jpg dans ce dossier (le.php est une erreur je l'ai enlevé), il n'y aura jamais rien d'autre, donc pas besoin de filtres. Il me faut juste un moyen de lire les données EXIF...
Dans n'importe quel dossier, tu as tout de même les dossiers virtuels . et .. qu'il te faut traiter dans ta boucle.

par yesh » 06 oct. 2007, 12:19

je ne crois pas que c'est ça le problème. il n'y a que des *.jpg dans ce dossier (le.php est une erreur je l'ai enlevé), il n'y aura jamais rien d'autre, donc pas besoin de filtres. Il me faut juste un moyen de lire les données EXIF.

en fait, en amont, j'upload un ZIP (que des images jpeg) qui décompresse le contenu dans un dossier. Logiquement c'est à ce moment que je devrais inscrire les données dans la BDD.

Le problème est que j'utilise une classe ( http://www.phpconcept.net/pclzip/ )

J'ai ce code

Code : Tout sélectionner

if ($archive->extract(PCLZIP_OPT_PATH, $rep) == 0) { die("Error : ".$archive->errorInfo(true)); }
marche impec mais je ne sais pas comment récup le nom du fichier qui vient d'être décompressé. Donc c'est par arpès que je relis le répertoire pour retrouver les données exif...

par Tracker » 06 oct. 2007, 12:08

Affiche dans la boucle la valeur de $file (fais un var_dump($file)) et poste le resultat
[edit]
Pardon j'avais pas vu le paramètre de la fonction dans l'erreur.
readdir retourne donc également le nom des dossiers et des fichiers (qui ne sont pas des images).
Tu dois trouver un moyen de filtrer sur des extensions des fichiers dans ton répertoire.

Regarde la fonction is_dir().

par yesh » 06 oct. 2007, 12:06

merci pour ton aide mais rien n'y fait, il m'envoie toujours ces msgs d'erreur





Warning: exif_read_data(.) [function.exif-read-data]: File not supported in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Warning: exif_read_data(..) [function.exif-read-data]: File not supported in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Warning: exif_read_data(test3.php) [function.exif-read-data]: File not supported in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Warning: exif_read_data() [function.exif-read-data]: Unable to open file in /home/www/077c6e28839222d8ab1e30b6f506017a/web/backoffice/test_dir.php on line 5

Re: Problème pour lire des fichiers dans un répertoire

par Tracker » 06 oct. 2007, 11:58

exif_read_data ( string filename ...)
La fonction attend un nom de fichier et pas un handle de fichier retourné par fopen

Donc ton code devrait ressembler à ça:
<?php
$handle=opendir('test');
while (false !== ($file = readdir($handle))) 
{
	$exif = exif_read_data ($file, 0, true);
	echo $exif[EXIF][DateTimeOriginal];
}
closedir($handle);
 ?>
Attention, je ne sais pas si readdir liste également les noms de dossier, alors vérifie.
a+

Problème pour lire des fichiers dans un répertoire

par yesh » 06 oct. 2007, 11:48

Bonjour !

j'aimerais lire des fichiers jpeg dans un répertoire. Pour cela, il faut que je récupère les infos exif des photos avec exif_read_data. Ca marche nickel quand je force le nom de fichier, mais dès que je veux faire ça avec toutes les photos d'un dossier ça foire

Code : Tout sélectionner

<?php $handle=opendir('test'); rewinddir(); while ($file = readdir($handle)) { $filePath = fopen($file, "r"); $exif = exif_read_data ($filePath, 0, true); echo $exif[EXIF][DateTimeOriginal]; } closedir($handle); ?>
je ne sais pas trop quoi utiliser. j'ai essayé avec file_get_contents ça marche pas non plus. Qqun a une idée ?