[PHP] copie de fichiers
fanny
-
kij_82 Messages postés 4260 Statut Contributeur -
kij_82 Messages postés 4260 Statut Contributeur -
Bonjour,
Je souhaiterai deplacer tout le contenu d'un repertoire qui est sur mon serveur (temp/photos/) vers un autre dossier (photos/) en effacant au préalable le contenu de ce dossier.
Plus en détail
1 ere fois que je lance le script :
dans le dossier temp/phosos/ il y aurait : photo1.jpg, photo2.jpg
dans le dossier photos/ rien
Je voudrais que ca deplace les 2 fichiers dans le dossier photos
2 ème lancement (et pour les futurs lancements)
-Effacer le contenu du dossier photos/
puis envoyer tous les fichiers (sans savoir combien il y en a et comment ils s'appelent) de temp/photos vers photos.
En vous remerciant par avance si quelqu'un peut m'aider
Fanny
Je souhaiterai deplacer tout le contenu d'un repertoire qui est sur mon serveur (temp/photos/) vers un autre dossier (photos/) en effacant au préalable le contenu de ce dossier.
Plus en détail
1 ere fois que je lance le script :
dans le dossier temp/phosos/ il y aurait : photo1.jpg, photo2.jpg
dans le dossier photos/ rien
Je voudrais que ca deplace les 2 fichiers dans le dossier photos
2 ème lancement (et pour les futurs lancements)
-Effacer le contenu du dossier photos/
puis envoyer tous les fichiers (sans savoir combien il y en a et comment ils s'appelent) de temp/photos vers photos.
En vous remerciant par avance si quelqu'un peut m'aider
Fanny
A voir également:
- [PHP] copie de fichiers
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Renommer des fichiers en masse - Guide
1 réponse
Bonjour,
Voilà un petit code à copier / coller dans un fichier :
(Code testé en local chez moi, donc ça devrait fonctionner)
Bien sur tu peux toujours ajouter des variantes comme sélection des fichiers en fonction de leur extension (pour ne copier que telle ou telle sorte de fichier), copie de l'arborescence du fichier d'input dans le fichier output (plutôt que de copier tous les fichiers à la racine du répertoire de sortie)
A toi d'adapter le code selon tes besoins.
Voilà un petit code à copier / coller dans un fichier :
(Code testé en local chez moi, donc ça devrait fonctionner)
<?php
function cleanDirectory ( $directory ){
// --- List all files included in input directory
$filesList = listFile($directory);
// --- Roll on this list
for ($i = 0; $i < sizeof($filesList); $i++){
// --- Retrieve current file name
$filename = $filesList[$i];
// --- Check if is a directory or a file
if ( is_dir($directory."/".$filename) ){
// --- Current file is a directory, call the same function on this new directory
cleanDirectory($directory."/".$filename);
// --- And
}
// --- And for all other cases (included directory case), remove current file
echo "<BR> unlink file : ".$directory."/".$filename;
unlink($directory."/".$filename);
}
}
function copyDocuments ( $inputDirectory, $outputDirectory ){
// --- Parse the input directory to retrieve copy all files to the output directory
$filesList = listFile($inputDirectory);
// --- Roll on the file list
for ($i = 0; $i < sizeof($filesList); $i++){
// --- Retrieve file name
$filename = $filesList[$i];
// --- Check if current file is a directory or a file
if ( is_dir($inputDirectory."/".$filename) ){
// --- Call the same function on current directory
copyDocuments($inputDirectory."/".$filename, $outputDirectory);
}
else {
// --- Copy the file in the output directory
if ( ! copy($inputDirectory."/".$filename,$outputDirectory."/".$filename) ){
// --- Report copy error :
echo "<BR>[Error] ".$inputDirectory."/".$filename;
}
else
echo "<BR>[Copied] ".$inputDirectory."/".$filename;
}
}
}
function listFile ( $directory ){
$filelist = null;
$i = 0;
if ($dir = @opendir($directory)) {
while (($file = readdir($dir)) != false)
if($file != ".." && $file != "." )
$filelist[$i++] = $file;
closedir($dir);
}
// --- Tri de la liste
if( $filelist != null && sizeof($filelist) != '0')
sort($filelist);
return $filelist;
}
// --- How to use these 2 functions :
$outputDirectory = "output";
$inputDirectory = "input";
// 1°) Clean output directory :
echo "<BR><b>Clean output directory ".$outputDirectory." :</b>";
cleanDirectory($outputDirectory);
// 2°) Copy documents from input directory to output directory :
echo "<BR><b>Copy documents :</b>";
copyDocuments($inputDirectory, $outputDirectory);
?>
Bien sur tu peux toujours ajouter des variantes comme sélection des fichiers en fonction de leur extension (pour ne copier que telle ou telle sorte de fichier), copie de l'arborescence du fichier d'input dans le fichier output (plutôt que de copier tous les fichiers à la racine du répertoire de sortie)
A toi d'adapter le code selon tes besoins.