begin process at 2012 05 30 22:38:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Obtention du répertoire d'un fichier à partir de son nom sur un FTP distant


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Obtention du répertoire d'un fichier à partir de son nom sur un FTP distant

mercredi 22 juin 2011 à 15:31:35 | Obtention du répertoire d'un fichier à partir de son nom sur un FTP distant

zefagi

Bonjour,

Après un bon triturage de cerveau de plus de 4heures comprenant de multiples recherches Google sur les principaux forums traitant du problème, je m'adresse en dernier recours à vous.

J'ai écrit une fonction (basée sur un listing de répertoire) pour obtenir le répertoire complet à partir du nom du fichier. Celui-ci fonctionne mais c'est le return qui pose problème. Mon return ne retourne rien, en revanche, si je le remplace par un echo, c'est mon résultat qui apparaît.

J'ai lu la doc concernant return mais j'ai surement zappé quelque chose...

Voici ma fonction :

Code PHP :
function FTP_CibleFile($conn_id,$rep_cible,$cible) {
	$liste_contenu = ftp_nlist($conn_id, $rep_cible);
	foreach ($liste_contenu as $element){
		$element_cut = explode("\\", $element);
		$end_element = sizeof($element_cut);
		$end_element--;
		
		$fichier = strpos($element_cut[$end_element],".");
		if ($fichier === false) {
			$rep_cible = $rep_cible.'\\'.$element_cut[$end_element];
				FTP_CibleFile($conn_id,$rep_cible,$cible);
			$end_cut = "\\".$element_cut[$end_element];
			$rep_cible = str_replace ($end_cut,"",$rep_cible);
			$rep_cible = str_replace ("\\","/",$rep_cible);
		}
		else {
			if($element_cut[$end_element]==$cible){
				$chemin = str_replace ("\\","/",$rep_cible);
				return $chemin;
			}
		}
	}
}


Je l'appelle de la manière suivante :

Code PHP :
$chemin = FTP_CibleFile($conn_id,$rep_cible,$modele);
echo $chemin;




$conn_id = ftp_connect($host)
$rep_cible = mon répertoire
$modele = mon nom de fichier

En somme, celle-ci fonctionne mais je n'arrive pas à récupérer son résultat. C'est le principe de récursivité qui me bloque. C'est le classique d'une mauvaise utilisation de return.

J'espère que vous pourrez m'aider, en vous remerciant d'avance,

Jef'
vendredi 24 juin 2011 à 11:16:02 | Re : Obtention du répertoire d'un fichier à partir de son nom sur un FTP distant

zefagi

Bonjour,

Je ne suis pas friand de up mais dans l'urgence je m'autorise...

Personne ? N'as d'idée... même rien qu'une piste...

J'ai tenté la sortie de boucle avec une variable booléenne mais sans succès.

Salutations
jeudi 30 juin 2011 à 08:02:19 | Re : Obtention du répertoire d'un fichier à partir de son nom sur un FTP distant

zefagi

Réponse acceptée !
Avec beaucoup d'aide, le problème a été résolu ailleurs.
Voici la fonction finale pour les intéressés :

Définition :

Fonction PHP servant à retourner le chemin d'accès d'un fichier sur un serveur distant
à partir de son nom.


Appel :

Code PHP :
<?php 
$conn_id = ftp_connect($host);
$login_result = ftp_login($conn_id, $user, $passwd);
$chemin = FTP_CibleFile($conn_id,$rep_cible,$modele); 
?>



$conn_id : est égale à la fonction ftp_connect() où $host est égal à votre serveur (exemple $host="SERVEUR08";)
$login_result : est égale à la fonction ftp_login()
$rep_cible : répertoire où l'on recherche le fichier depuis la racine du serveur. (Exemple : "/bibliothèque/grand dossier contenu quelque part mon fichier")
$modele : le nom de votre fichier. L'extension est obligatoire.
$chemin : Vaudra le retour de la fonction FTP_CibleFile($conn_id,$rep_cible,$modele) (voir en dessous) sous la forme :
"(valeur de $rep_cible)/Dossier 1/Dossier 2/..."


Code de la fonction :

Code PHP :
<?php
function FTP_CibleFile($conn_id,$rep_cible,$cible) {
	static $pastPath = array();
	$path = explode('/',$rep_cible);
	$gotDir = 0;
	$liste_contenu = ftp_nlist($conn_id, $rep_cible);
	foreach($liste_contenu as $elem){
		$clear_elem = explode('\\',$elem);
		$end_clear_elem = count($clear_elem) - 1;
		$elem = $clear_elem[$end_clear_elem];
		if(strpos($elem,".") === false){
			if(!in_array($elem,$pastPath)){
				$pastPath[] = $elem;
				return FTP_CibleFile($conn_id,$rep_cible.'/'.$elem,$cible);
			}else{
				$gotDir++;
			}
			
		}else{
			if($elem == $cible){
				return $rep_cible;
			}
		}
	}
	$tmp = count($path) - 1;
	if($gotDir == 0 || in_array($path[$tmp], $pastPath)){
		$b = strlen($rep_cible) - strlen($path[$tmp]) - 1;
		$rep_cible = substr($rep_cible,0,$b);
		return FTP_CibleFile($conn_id,$rep_cible,$cible);
	}
}
?>


Cette discussion est classée dans : end, element, rep, cible, cut


Répondre à ce message

Sujets en rapport avec ce message

mkdir et droits [ par elanspeech ] salut, dans ma page php, je fais la commande suivante : mkdir ("rep/", 0777); le repertoire est bien cree mais pas avec les bons droits.... j'obtiens Problème pour trier des données [ par WRom1 ] Bonjour à tous,J'ai un prb pour trier des données : je récupère le nom des fichiers d'un répertoire, et j'aimerai les classer par ordre alphabétique. Créer un repertoire et modifier un script [ par ElGaunt ] Bonjour à tous, Voila ci dessous un script dédié à autorier un visiteur à poster un commentaire. J'aimerais le modifier afin de pouvoir le mettre en p Expression reguliere [ par wonesek ] $mois = array( "01" => "Janvier", "02" => "Fevrier", "03" => "Mars", "04" => "Avril", "05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => tableau et chaine [ par rich25200 ] bonjour,j'ai une chaine séparé par des virgule et je veux que chaque chaine soit dans un element du tableau sans les virguels...Exemple :$chaine = 1;2 chmod sous XP [ par sazerty ] Bonjour,Ca fais plusieurs jours maintenant ke je cherche une solution a mon probleme mais sans succes... :(j'ai installer Apache/2.0.49 (Win32) PHP/5. amélioration d'un code [ par christobal ] j'ai ce script pour mes pseudo frames.J'aimerai savoir comment le modifier pour qu'il soit au morme de la dernierre version de PHP.------ debut de scr CHMOD Apache sous XP [ par sazerty ] Bonjour,Ca fais plusieurs jours maintenant ke je cherche une solution a mon probleme mais sans succes... :(j'ai installer Apache/2.0.49 (Win32) PHP/5. Rechercher un element dans une source html [ par djpunk ] Bonjour,j'aurais voulu savoir si quelqu'un pouvait me donner un coup de main... je voudrais pouvoir lire la source d'une page en html et reprendre cer Tableau qui disparait [ par nicool0410 ] Salut, j'ai un souci concernant un tableau dont je ne retrouve trace ensuite.Je m'explique: je souhaite remplir le tableau $rep par les noms de répert


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales