Bonjour,
J'essaye de réaliser un script PHP me permettant de lire le contenu d'un répertoire contenant des images pour les copier dans un répertoire précis et même dans un sous-répertoire portant son nom.
Chaque image est identifiée par un nom de fichier explicite de type nom-000.jpg.
Je dois me servir d'une classe qui va analyser via une méthode le contenu du répertoire source. Une autre méthode sert a récupérer le nom du fichier et enfin une troisième méthode est censée transférer le fichier dans un nouveau répertoire de tri et placé dans un sous dossier portant son nom.
Code PHP : 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
30
31
32
33
34
35 <?php require('config.php'); require('Image.php'); $success= false; if(!empty($_POST['submit'])){ $image = new Image(); $images = $image->getImages(IMAGE_DIR_PATH); } ?> <!DOCTYPE html> <html> <head> <link href="styles.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="container"> <p>Analysons votre répertoire d'images pour les trier par catégories ...</p> <form method="post" action="#"> <input type="submit" name="submit" value="analyse de vos images"> </form> </div> <?php if($success == true){ echo '<p class="success"> Vos fichiers ont bien été traités et déplacés.</p>'; } ?> </body> </html>
Mon fichier classe Image.php :
Code PHP : 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 <?php class Image { public function _construct() { // fonction vide pour ce projet } public function getImages($image_dir) { $i = 0; if ($handle = opendir($image_dir)) { while (false !== ($entry = readdir($handle))) { if ($entry !="." && $entry !="..") { $i++; $images[$i]['filename'] = $entry; $this->identificationFile($images[$i]['filename']); $this->moveFile($images[$i]['filename']); } } } closedir($handle); return $images; } public function identificationFile($filename) { $result = explode('-', $filename); $folder = $result[0]; return $folder; } public function moveFile($filename) { $action = rename(IMAGE_DIR_PATH . $filename , IMAGE_DIR_DEST . $folder .'/' . $filename); if ($action == true) { $success = true; return $success; } else { echo 'Une erreur est survenue'; } } } ?>
Mes variables sont définies :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php define ('WEB_DIR_NAME', 'projet'); define ('IMAGE_DIR_NAME', 'img'); define ('IMAGE_DEST_NAME', 'tri'); define ('IMAGE_DIR_PATH', $_SERVER['DOCUMENT_ROOT'] . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/'); define ('IMAGE_DIR_DEST', $_SERVER['DOCUMENT_ROOT'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DEST_NAME . '/'); define ('IMAGE_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/'); define ('IMAGE_DEST_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DEST_NAME . '/'); define ('WEB_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/'); ?>
Mon problème est le suivant :
Tout paraît fonctionner à une exception près, les fichiers sont transférés en vrac et il n'y a donc pas de sous-répertoires créés. Il semblerait qu'il y ait un problème de retour de la variable $folder (ainsi que de la variable $success).
Pourriez-vous me donner quelques pistes pour trouver mon erreur.
Un grand merci par avance![]()
Partager