Obtenir la liste des fichiers par FTP
Je veux imprimer la liste des fichiers et seuls les fichiers d'un serveur FTP, voici ce que j'ai pu accomplir.
<?php
$ftp_server = "my ftp server";
$conn_id = ftp_connect($ftp_server);
$ftp_user_name = "ftp username";
$ftp_user_pass = "ftp password";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$contents = ftp_nlist($conn_id, '/');
for ($i = 0 ; $i < count($contents) ; $i++)
echo "<li>" . substr($contents[$i],1) . "</li>";
ftp_close($conn_id);
?>
mais cela imprime les noms de fichiers et de dossiers. Comment puis-je imprimer les noms de fichiers (fichiers peuvent ne pas avoir des extensions!)
OriginalL'auteur sikas | 2010-11-03
Vous devez vous connecter pour publier un commentaire.
Options:
1) vous pouvez utiliser
ftp_rawlist
au lieu deftp_nlist
pour obtenir la liste complète pour le fichier/répertoire, qui doit indiquer si c'est un répertoire. Toutefois, le format de cette liste dépend du système d'exploitation du serveur ftp. Par exemple, sur un système unix/linux brutes liste pourrait ressembler à quelque chose comme ceci:où le "d" dans la première colonne vous dira que c'est un répertoire. Pas sûr de ce qu'il pourrait ressembler sur un serveur Windows.
2) pour chaque nom de fichier de votre retour, vous essayez de CD. Si vous le pouvez, c'est un annuaire!
if (!ftp_chdir(....){/*FILE*/}else{/*UP*/}
il a travaillé, mais a donné le message d'erreur suivant: (Avertissement: ftp_chdir() [function.ftp-chdir]: /index.php: Aucun fichier ou répertoire dans C:\wamp\www\Contact_Keeper\copyftp.php) sur la ligne 14 pour chaque fichier qu'il trouve ... et pour la structure, il doit être ftp_chdir($ftp_stream,$directory) (obtenu à partir de dreamweaver)
Oui, c'est plus lisible et correspond à l'OP de la nécessité de mieux. Je voulais juste faire mon exemple court!
J'ai juste besoin de fichiers dans un dossier spécifique.
si l'avertissement est un problème, vous pouvez modifier
ftp_chdir
à@ftp_chdir
pour supprimer l'avertissement, mais sachez que va également supprimer légitimes des erreurs (par exemple, le réseau a été).OriginalL'auteur Jacob Mattison
Voici un script qui va le faire pour vous, avec l'aimable autorisation de poster sur ftp_nlist (PHP Docs):
Fait, merci...
Votre code ne fonctionne pas pour moi. la fonction renvoie toujours false. Il pense que tous les fichiers sont pas de répertoire!!!
OriginalL'auteur Justin Ethier
si vous utilisez le ftp_rawlist comme suit:
Devriez vous rapprocher de votre objectif.
<dir>
dans la liste.OriginalL'auteur RobertPitt
Vous pouvez également utiliser la
ftp_mdtm()
fonction. Cela renvoie toujours une erreur (-1), lorsqu'elle échoue, ce qui pourrait indiquer un répertoire étant donné que cette fonction ne fonctionne pas pour les répertoires. Le seul inconvénient est qu'il ne fonctionne pas sur certains systèmes (le manuel n'est pas précisez lesquels), de sorte que vous aurez besoin de tester si il a travaillé d'abord.OriginalL'auteur Lee Blake
Si vous êtes dans le même serveur, vous pouvez le faire:
Pour le serveur distant, vous pouvez vérifier si le fichier existe avec d'autres méthodes.
OriginalL'auteur aesede