Maison > Questions et réponses > le corps du texte
Pour la fête d'anniversaire de ma femme, j'ai créé un site Web sur lequel j'ai collecté des images d'invités à la fête, puis j'ai réalisé un joli livre en guise de souvenir. Les invités disposent d'un compte et téléchargent des images dans « leur » dossier. J'ai maintenant un outil qui crée dynamiquement des diaporamas à partir d'images - mais malheureusement, il ne peut pas parcourir les sous-dossiers. Mon objectif principal est donc de copier le fichier image dans un dossier spécifié à partir duquel le diaporama peut le récupérer. J'exécuterais ensuite un script PHP comme cron toutes les 5 minutes environ et afficherais l'image à l'écran pendant toute la durée de la fête.
J'ai trouvé un tas d'extraits de code qui font tous la même chose : Ils copient tous les fichiers et dossiers de manière récursive vers la destination définie. Par exemple. Celui-ci (tiré d'ici : https://code-boxx.com/copy-folder-php/) :
<?php // (A) COPY ENTIRE FOLDER function copyfolder ($from, $to, $ext="*") { // (A1) SOURCE FOLDER CHECK if (!is_dir($from)) { exit("$from does not exist"); } // (A2) CREATE DESTINATION FOLDER if (!is_dir($to)) { if (!mkdir($to)) { exit("Failed to create $to"); }; echo "$to created\r\n"; } // (A3) GET ALL FILES + FOLDERS IN SOURCE $all = glob("$from$ext", GLOB_MARK); print_r($all); // (A4) COPY FILES + RECURSIVE INTERNAL FOLDERS if (count($all)>0) { foreach ($all as $a) { $ff = basename($a); // CURRENT FILE/FOLDER if (is_dir($a)) { copyfolder("$from$ff/", "$to$ff/"); } else { if (!copy($a, "$to$ff")) { exit("Error copying $a to $to$ff"); } echo "$a copied to $to$ff\r\n"; } }} } // (B) GO! copyfolder("C:/SOURCE/", "C:/TARGET/"); ?>
Cela fonctionne bien, mais la vérité est que ce n'est pas ce dont j'ai besoin. Le script copie les fichiers et les dossiers et place les fichiers dans le même sous-dossier dans lequel ils se trouvent. Mon problème est que je ne veux pas créer de sous-dossiers. Je veux juste que le script parcoure tous les sous-dossiers et copie les fichiers image trouvés dans un dossier. Je pensais que cela devrait être une chose facile pour les débutants, mais il semble que j'avais tort.
Quelqu'un peut-il m'aider à y parvenir ? Merci!
P粉0837850142024-01-30 00:50:02
IT Goldman a raison - laissez $to en dehors de l'équation ; j'ai même entièrement supprimé la variable $to et mis mon chemin dans le paramètre de copie :
0) { foreach ($all as $a) { $ff = basename($a); // CURRENT FILE/FOLDER if (is_dir($a)) { copyfolder("$from$ff/"); } else { if (!copy($a, "C:/TARGET/$ff")) { exit("Error copying $a to C:/TARGET/$ff"); } echo "$a copied to C:/TARGET/$ff\r\n"; } }} } // (B) GO! copyfolder("C:/SOURCE/"); ?>