Publié le 31/05/2011
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Lister les fichiers sur un serveur FTP

Le protocole FTP (File Transfer Protocol) sert à échanger des fichiers sur un réseau informatique. Bien connu des webmaster, la communication via FTP sert en majorité à copier des fichiers entre un ordinateur local et le serveur Apache distant. Avec un script PHP, les commandes FTP peuvent etre automatisées.

Lancer une commande FTP

Les fonctions ftp_nlist() et ftp_rawlist(), accessible en PHP, envoient une commande 'ls' à un serveur FTP. De la même manière qu'un client FTP classique, la commande liste les fichiers présents dans un dossier avec plus ou moins de précisions.
La class FTPDir encapsule les fonctions de communication suivante:
- connect(): connecter au serveur FTP,
- close(): fermer la connexion,
- fixTmpDir(): corriger l'erreur 'open_basedir restriction in effect' sur la commande ftp_nlist() et ftp_rawlist() sur certains serveurs,
- filelist(): lister les noms de fichiers,
- fulllist(): obtenir une liste détaillée des fichiers.
<?php
/**
 * Lister les fichiers sur un serveur FTP
 * @author fobec.com 2011
 */
class FTPDir {
 
    private $port= 21;
    private $timeout=30;
    // ID du stream de connexion FTP
    private $id;
 
    /**
     * Connecter au serveur FTP
     * @param string $host adresse du serveur FTP
     * @param string $user utilisateur
     * @param string $password mot de passe
     */
    public function connect($host, $user,$password) {
        // ouvrir une connexion au serveur FTP
        $this->id = @ftp_connect($host,$this->port,$this->timeout);
        if ($this->id===false) {
            throw new Exception("Invalid FTP host ");
        }
 
        // s'identifier sur le serveur
        $login = @ftp_login($this->id, $user, $password);
        if ($login===false) {
            throw new Exception("Invalid username or password ");
        }
 
        // basculer en mode passif 
        ftp_pasv($this->id, true);
    }
 
    /**
     * Fermer la connexion au serveur FTP
     */
    public function close() {
        ftp_close($this->id);
    }
 
    /**
     * Corriger l'erreur open_basedir restriction in effect
     */
    public function fixTmpDir() {
        putenv('TMPDIR='.$_SERVER['DOCUMENT_ROOT'].'/temp/');
    }
 
    /**
     * Lister les fichiers dans le répertoire
     * @param string $dir répertoire à lister
     * @return array liste de fichiers
     */
    public function filelist($dir) {
        $files = ftp_nlist($this->id,$dir);
        return $files;
    }
 
     /**
     * Lister les fichiers dans le répertoire
     * @param string $dir répertoire à lister
     * @return array liste détaillée des fichiers
     */
    public function fulllist($dir) {
        $files =ftp_rawlist($this->id,$dir);
        return $files;
    }
}
?>

Lister les images sur un serveur FTP

Utilisons la class FTPDir pour lister les images déposées dans le dossier 'images'.
<?php
/**
 * Lister les fichiers sur le serveur FTP de monsite.com
 */
$ftpDir=new FTPDir();
//se connecter
$ftpDir->connect('ftp.monsite.com', 'username', 'password');
//corriger l'erreur open_basedir restriction in effect
$ftpDir->fixTmpDir();
//liste détaillé des fichiers dans le dossier image
print_r($ftpDir->filelist('/image'));
//fermer la connexion
$ftpDir->close();
?>
Resultat:
Array
(
[0] => /images/.
[1] => /images/..
[2] => /images/logo.gif
[3] => /images/face.png
...
}

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
31/05/2011
Visualisation
vu 5875 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par pgts09 dans tuto

Bonjour,
Felicitations pour ce tuto simple, et qui semble repondre exactement ce que je cherchais !
Malheureusement je n'arrive pas faire fonctionner, voici ce que donne mon essai : J'ai pourt...

Publié par IANDRY dans tuto

c'est bien d'avoir les images et liste des pays du monde avec leurs drapeaux
respectif

Publié par bakouz dans java

Bonjour Axel,
je suis tombe sur ton site un peu par hasard.
Hasard car je ne le connaissais pas jusqu'a maintenant, et non du hasard car c'est exactement ce genre de class que je recherchais. !...

Publié par Fobec dans news

Votre message a ete deplace sur le forum, ce sera plus facile pour en discuter.
http://www.fobec.com/forum/correspondance-entre-adresse-ipv4-adresse-ipv6-t1146.html

Publié par snoop dans java

simple, rapide et effectif du premier coup.
Merci!