Arborescence de fichiers

0/5 (1 avis)

Vue 15 298 fois - Téléchargée 700 fois

Description

<!-- L'explorateur comprend 3 pages cfm -->
<!-- 1. Page listing.cfm : feuille qui comprendra l'arborecence-->
<!-- 2. Custom Tag arbot.cfm : C'est lui qui va permettre d'alimenter l'arborescence -->
<!-- 3. Page traitement.cfm : feuille qui sera appelée lors du clic sur un fichier-->

Source / Exemple :


<!-- ************ PAGE listing.cfm ************ -->

<!-- Ici le répertoire à explorer -->
<cfset ExploreRep = "VOTRE REPERTOIRE">

<!-- Accès à la page qui sera appelée lors du clic sur un fichier de l'arborescence -->
<cfset TraitePage = "traitement.cfm">

<cfset DirComplet = "">

<!--- Custom Tag qui renvoie l'arborescence complète à partir du répertoire maître ---> 
<cf_arbot dir="#ExploreRep#">

<cfform action="#TraitePage#" method="POST">
	<cftree name="Tree"
			width="50%"
			bold="No"
			italic="No"
			border="yes"
			hscroll="yes"
			vscroll="yes"
			required="Yes"
			completepath="no"
			appendkey="Yes"
			highlighthref="no"
		>
					
		<!--- Répertoire maître --->
		<cftreeitem 
			value="#ExploreRep#" 
			display="#ExploreRep#" 
			img="dossier_ouv.gif"
			imgopen="dossier_ferm.gif"
			queryasroot="yes" 
			expand="Yes"
		>
					
		<!--- Le contenu du répertoire maître --->
		<cfloop list="#DirComplet#" index="curdir" delimiters=";">
			<cftreeitem value="#GetToken('#curdir#',1,',')#" 
						display="#GetToken('#curdir#',2,',')#" 
						parent="#GetToken('#curdir#',3,',')#" 
						img="#GetToken('#curdir#',4,',')#" 
						imgopen="dossier_ferm.gif"
						queryasroot="yes" 
						expand="no" 
						HREF="#TraitePage#" 
						target=""
			>
		</cfloop>
	</cftree>
</cfform>

<!-- ************ CUSTOM TAG Arbot.cfm ************ -->

<!--- Récupération du chemin à explorer --->
<cfparam name="attributes.dir">

<cfdirectory action="LIST" directory="#attributes.dir#" name="curdir" sort="Name">
	<!--- Directory = nom du répertoire --->
	<!--- Sort = liste optionnelle de colonnes séparées par une virgule IMPORTANT ---> 
	<!--- Name = Requête  si ACTION="list" --->
	
	<cfset DirComplet = "">		<!--- Elément qui sera renvoyé  --->
	
	<cfloop query="curdir">		<!--- Contient l'arboresence à partir du dossier maître --->

		<cfif  Name is not "." and name is not "..">
			<!--- Si ACTION = "LIST"...Name = "nom du fichier ou du répertoire " 
									...Type = "FILE" pour fichier, "DIR" pour répertoire --->
			<cfif Type IS "dir">
				<cfset img = "dossier_ouv.gif">
			<cfelse>
				<cfset img = "file.gif">
			</cfif>
			
			<cfset DirComplet = DirComplet & "#attributes.dir#/#name#,#name#,#attributes.dir#,#img#;">
			
			<!--- S'il y a encore un dossier, on affiche son arborescence --->
			<!-- Appel du custom tag de manière récursive -->
			<cf_arbot dir="#attributes.dir#/#name#">
		</cfif>
	</cfloop>

<cfset caller.DirComplet = caller.DirComplet & DirComplet>

<!-- ************ PAGE traitement.cfm ************ -->

<!-- Récupération du nom du fichier sur lequel l'utilisateur a cliqué -->
<cfparam name="url.cftreeitemkey" default = "">

<!-- On met au bon format le chemin complet du fichier -->
<cfset url.cftreeitemkey = replace(trim(#url.cftreeitemkey#),"/","\","ALL")>

<!-- On affiche l'élement selectionné -->
<cfoutput>
	#url.cftreeitemkey#
</cfoutput>

Conclusion :


Je l'ai testé plusieurs fois et il marche correctement, cependant il a une petite faille et je ne sais pas comment le résoudre.

Si l'on rafraichit la page listing.cfm, le CFTREE ne s'affiche plus et il est nécessaire de vider le cache afin de pouvoir reconsulter l'arborescence.

Si vous avez des corrections, je serai trés attentif...

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
2
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
27 avril 2004

j'ai essayé le code dans une de mes pages et moi je peux rafraichir la page sans aucun problème. En revanche, le fait de cliquer une première fois sur un dossier déjà ouvert entraine une erreur et la fermeture du navigateur.
L'erreur est la suivante :

runtime error!
program: ........iexplore.exe
this application has requested the Runtime to terminate it in an unusual way.

Puis quand je relance la page et que je refais la même manip, ca marche. Quelqu'un aurait-il une solution à mon problème?
Merci d'avance.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.