Domenica
19
Novembre 2023
Come Copiare file e cartelle in php? Ho utilizzato questa semplice funzione che legge il contenuto di una cartella su un server e lo copia in un’altra posizione.
Con questa funzione potrai:
Ti basterà specificare solamente il percorso di partenza e quello di destinazione, passandoli come parametri.
Procediamo per gradi e analizziamo la funzione:
Con questa funzione in php potrai copiare tutti i file contenuti in una cartella. Dovrai passare come parametri solo il percorso di origine (in cui si trovano i file) e il percorso di destinazione (in cui vuoi copiare i file.
Per copiare i file faremo riferimento alle funzioni:
$source = 'percorso/cartella/di/origine/';
$destination = 'percorso/cartella/di/destinazione/';
function ekw_copy_file($source, $destination) {
//scansiona la cartella
$array = scandir($source);
foreach ($array as $item) {
// non copio i file "." e ".."
if ($item != "." && $item != "..") {
$start = $source . $item;
if (is_file($start)) {
copy($start, $destination . $item);
echo "File copiato: " . $source . $item;
}
}
}
}
Ricordati di:
Puoi aggiungere questo codice per creare la cartella di destinazione se non è presente:
$destination = "percorso/cartella/didestinazione/";
if (!is_dir($destination)) {
mkdir($destination, 0755, true);
}
Con questa funzione php potrai copiare tutti i file contenuti in una cartella, comprese sottocartelle e file contenuti al loro interno.
Si tratta di una funzione ricorsiva che legge il contenuto di una cartella e copia tutti i file al suo interno nella medesima posizione. Quando incontra una sottocartelle allora esegue la stessa operazione anche per essa, creando un percorso di destinazione.
Ricordati di:
$source = 'percorso/cartella/di/origine/';
$destination = 'percorso/cartella/di/destinazione/';
function ekw_copy_file($source, $destination) {
//scansiona la cartella
$array = scandir($source);
foreach ($array as $item) {
// non copio i file "." e ".."
if ($item != "." && $item != "..") {
$start = $source . $item;
// se si tratta di un file lo copia
if (is_file($start)) {
copy($start, $destination . $item);
echo "File copiato: " . $source . $item;
}
//se è una sottocartella esegue la funzione ricorsiva
elseif (is_dir($start)) {
//creo la nuova sottocartella nel percorso di destinazione
mkdir($destination . $item, 0755, true);
echo "Cartella copiata: " . $destination . $item;
//eseguo la funzione ricorsiva
ekw_copy_file($start . '/', $destination . $item . '/');
}
}
}
}
In questa funzione abbiamo integrato la funzione mkdir() di php per creare una nuova cartella nel percorso di destinazione (siccome le sottocartelle non esistono ancora)
Questa funzione è utile per:
Scrivi un commento