Dans PHP, la fonction FTP_RAWLIST est un outil très utile et est souvent utilisée pour répertorier les fichiers et les sous-répertoires sous répertoires spécifiés du serveur FTP. Grâce à cette fonction, nous pouvons obtenir une liste détaillée de fichiers et répertoires du serveur FTP, y compris les autorisations de fichiers, la taille du fichier, le dernier temps de modification et d'autres informations. Dans certains cas, nous devons déterminer si le chemin FTP est un fichier ou un répertoire. Pour le moment, nous pouvons utiliser les informations de sortie de la fonction FTP_RAWLIST pour porter des jugements.
La fonction de la fonction ftp_rawlist est d'obtenir la liste de fichiers du répertoire spécifié dans le serveur FTP et de renvoyer les informations détaillées de la liste. Sa syntaxe de base est la suivante:
ftp_rawlist(ftp_stream, directory);
ftp_stream : une ressource de connexion FTP valide.
Répertoire : le chemin d'accès au fichier ou au répertoire que vous souhaitez énumérer.
Cette fonction renvoie un tableau, chaque élément de tableau représente une ligne d'informations sur un fichier ou un répertoire sur le serveur FTP. Le format des informations est généralement une liste de style Unix, y compris les autorisations pour les fichiers ou les répertoires, les propriétaires, les tailles de fichiers, le temps de modification, etc.
Grâce aux données renvoyées par FTP_RAWLIST , nous pouvons déterminer si un chemin est un fichier ou un répertoire. Pour porter de tels jugements, cela dépend généralement du premier caractère de chaque ligne d'informations renvoyée.
Si le premier caractère est D , cela signifie que l'élément est un répertoire.
Si le premier caractère est - , cela signifie que l'élément est un fichier.
Par conséquent, nous devons seulement vérifier le contenu de la première ligne renvoyée pour déterminer le type de chemin. Pour des implémentations spécifiques, veuillez vous référer à l'exemple de code suivant.
<?php
// FTPInformations sur la connexion
$ftp_server = "ftp.example.com";
$ftp_user_name = "username";
$ftp_user_pass = "password";
// Se connecter àFTPserveur
$conn_id = ftp_connect($ftp_server);
// Se connecterFTPserveur
if (@ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
echo "FTPConnexion avec succès!<br>";
// Définir le mode passif
ftp_pasv($conn_id, true);
// Le chemin pour vérifier
$path = '/path/to/directory_or_file';
// Obtenez la liste des répertoires
$file_list = ftp_rawlist($conn_id, dirname($path));
// Vérifiez s'il s'agit d'un fichier ou d'un répertoire
$is_directory = false;
$is_file = false;
foreach ($file_list as $file_info) {
// Analyser les informations de fichier
$parts = preg_split("/\s+/", $file_info);
$file_name = $parts[count($parts) - 1];
// Déterminer s'il s'agit d'un répertoire
if ($file_info[0] == 'd' && $file_name == basename($path)) {
$is_directory = true;
break;
}
// Déterminer s'il s'agit d'un fichier
if ($file_info[0] == '-' && $file_name == basename($path)) {
$is_file = true;
break;
}
}
// Résultat de sortie
if ($is_directory) {
echo "chemin $path C'est un répertoire。<br>";
} elseif ($is_file) {
echo "chemin $path C'est un fichier。<br>";
} else {
echo "chemin $path Ni un fichier ni un répertoire。<br>";
}
// fermetureFTPconnecter
ftp_close($conn_id);
} else {
echo "无法Se connecter àFTPserveur!<br>";
}
?>
Dans cet exemple, nous établissons d'abord une connexion au serveur FTP et nous nous connectons. Ensuite, nous utilisons la fonction FTP_RAWLIST pour obtenir la liste de fichiers du répertoire au-dessus du chemin spécifié. Ensuite, nous traversons la liste des fichiers renvoyée et déterminons si l'élément est un fichier ou un répertoire basé sur le premier caractère de chaque ligne. Enfin, nous jugerons la sortie du résultat.
Si le chemin est un lien symbolique, le contenu renvoyé par FTP_Rawlist peut être plus compliqué et nécessite un traitement supplémentaire.
La sortie de FTP_RAWLList dépend généralement de la configuration du serveur FTP. Différents serveurs FTP peuvent renvoyer différents formats d'informations de fichier, de sorte que les règles d'analyse doivent être ajustées en fonction du serveur spécifique.
Cet exemple suppose que le chemin est un enfant direct d'un fichier ou d'un répertoire. Si le chemin cible contient un sous-répertoire, un appel récursif vers FTP_Rawlist peut être nécessaire pour vérifier davantage.
Grâce à la fonction FTP_RAWLIST , nous pouvons facilement déterminer si le chemin du serveur FTP est un fichier ou un répertoire. En analysant les informations sur le fichier renvoyé et en jugeant s'il s'agit d (répertoire) ou - (fichier) basé sur le premier caractère, nous pouvons porter des jugements précis. Cette méthode fonctionne sur la plupart des serveurs FTP et peut nous aider à mieux gérer les fichiers et les répertoires sur FTP.