Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] kopiownie katalogów przez ftp
Forum PHP.pl > Forum > Przedszkole
Qbexus
Szukam klasy, funkcji, sposobu na przekopiowywanie po ftp całego skryptu czyli plików katalogów i podkatalogów z serwera lokalnego ja docelowe.
toaspzoo
KLASA:
Kod
<?php

class Folders {

    public static function CreateFolder($path) {

        if(!is_array($path)) {
            if(file_exists($path)) return $path;
            $path = explode('/', $path);    // Rozbijam nazwę katalogu
        }

        $name = '';
        foreach($path as $key => $value) {
            if(empty($value)) array_splice($path, $key, 1);    // Usunięcie wszystkich pustych przestrzeni
            else {
                $path[$key] = ucfirst($value);    // Nazwy katalogów powinny zaczynać się z dużej litery
                $name .= $value;
            }
        }
        if(file_exists($name)) return $name.'/';

        $cat_path = '';
        foreach($path as $value) {
            $cat_path .= $value.'/';
            if(!file_exists($cat_path)) {
                mkdir($cat_path);    // Tworzenie katalogów
            }
        }
        return $cat_path;
            
    }

    /**
     * Metoda pobierająca liste katalogów z danego folderu.
     *
     * @param string $path - Ścieżka do katalogu z którego mają być odczytane katalogi.
     * @return array - Tablica numeryczna z nazwą katalogów || bollean @false jeśli w katalogu nie ma folderów lub ścieżka została błędnie podana.
     */
    public static function GetFolders($path) {
        if(file_exists($path)) {
            $folder_list = array();
            if(@$dir = opendir($path)) {
                while(($file_name = readdir($dir)) !== false) {
                    if(is_dir($path.$file_name)) {
                        if($file_name != '.' && $file_name != '..') $folder_list[] = $file_name;
                    }
                }
                closedir($dir);
            }
            if(!empty($folder_list)) return $folder_list;
            else return false;
        }
        else return false;
    }

    /**
     * Metoda pobierająca liste plików z danego folderu.
     *
     * @param string $path - Ścieżka do katalogu z którego mają być odczytane pliki.
     * @return array - Tablica numeryczna z nazwami plików || bollean @false jeśli w katalogu nie ma plików lub ścieżka została błędnie podana.
     */
    public static function GetFiles($path) {
        if(file_exists($path)) {
            $files_list = array();
            if(@$dir = opendir($path)) {
                while(($file_name = readdir($dir)) !== false) {
                    if(is_file($path.$file_name)) $files_list[] = $file_name;
                }
                closedir($dir);
            }
            if(!empty($files_list)) return $files_list;
            else return false;
        }
        else return false;
    }

    /**
     * Metoda kasująca określony folder.
     *
     * @param string $path - Ścieżka do folderu który ma zostać usunięty.
     */
    public static function RemoveFolder($path) {
        self::RemoveFiles($path);    // Kasowanie plików

        $folders_list = self::GetFolders($path);
        if(!empty($folders_list)) {
            foreach($folders_list as $value) {    // Kasowanie folderów
                self::RemoveFolder($path.$value.'/');
            }
            @rmdir($path);
        }
        else @rmdir($path);
    }

    /**
     * Metoda usuwa pliki z podanego folderu.
     *
     * @param string $path - Ścieżka do folderu z którgo mają zostać usunięte pliki.
     */
    public static function RemoveFiles($path) {
        $file_list = self::GetFiles($path);
        if(!empty($file_list)) {
            foreach($file_list as $value) {
                @unlink($path.$value);    // Kasowanie plików w katalogu
            }
        }
    }

    /**
     * Metoda kopiuje pliki i katalogi z określonego folderu.
     *
     * @param string $path - Ścieżka do katalogu w którym mają zostać skopiowane pliki i foldery.
     * @param string $destination - Ściezka katalogu do którego mają zostać skopiowane pliki i foldery (katalog nie musi istnieć).
     *
     * @return bollean @true || bollean @e false - Gdy podano błędną ścieżkę.
     */
    public function CopyFolder($path, $destination) {
        if(file_exists($path)) {
            if(!file_exists($destination)) self::CreateFolder($destination);    // Tworzenie katalogu docelowego jeśli nie istnieje

            $file_list = self::GetFiles($path);    // Pobieram liste plików
            if(!empty($file_list)) {    // Przenoszenie plików
                foreach($file_list as $value) {
                    @copy($path.$value, $destination.$value);
                }
            }

            $folders_list = self::GetFolders($path);
            if(!empty($folders_list)) {
                foreach($folders_list as $value) {    // Kopiowanie katalogów
                    self::CopyFolder($path.$value.'/', $destination.$value.'/');
                }
            }
            return true;
        }
        else return false;
    }
}
?>


Kod
    <?php
    
    Folders::CopyFolder('Public/Images/', 'Zdjecia/Nowe_zdjecia/');
    
    ?>


źródło: http://forum.php.pl/index.php?showtopic=101863


pozdro, trzeba szukać
Qbexus
A gdzie tu jest ftp?
toaspzoo
user:haslo@host/sciezka

jakoś tak to było
Qbexus
Niestety otrzymuję taki błąd Non-static method Folders::CopyFolder() should not be called statically in
toaspzoo
któraś funkcja musi być static (statyczna) niezmienna
Qbexus
Niestety problem nadal pozostaje nierozwiązany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.