我想使用CFDirectory獲取在ColdFusion Admin中創建的映射的文件列表。到目前爲止,我無法獲得填充列表,但是如果我參考物理路徑,將顯示完整的文件列表。在ColdFusion映射上的cfdirectory
下面是我使用的代碼:
<cfoutput> <cfdirectory action="list" directory="mymapping" name="test"><cfdump var="#test#"> </cfoutput>
感謝,
喬恩C.
我想使用CFDirectory獲取在ColdFusion Admin中創建的映射的文件列表。到目前爲止,我無法獲得填充列表,但是如果我參考物理路徑,將顯示完整的文件列表。在ColdFusion映射上的cfdirectory
下面是我使用的代碼:
<cfoutput> <cfdirectory action="list" directory="mymapping" name="test"><cfdump var="#test#"> </cfoutput>
感謝,
喬恩C.
如果要設置一個名爲 「mymapping」 變量的目錄。這將是如下:
<cfdirectory action="list" directory="#mymapping#" name="test">
<cfdump var="#test#">
根據映射的設置方式 - 你可能需要給它充分的「虛擬」路徑:
<cfdirectory action="list" directory="/mapping/folder" name="test">
<cfdump var="#test#">
剛剛在Railo上測試了它,它的工作原理。 – 2010-01-09 20:10:07
你沒有說是哪個版本CF你在使用,所以Goyix的解決方案是部分正確的:它適用於Railo,但不適用於ACF。
在ACF8 +中,您可以使用ServiceFactory來提取真實路徑。代碼可以是這樣的:
<cfset mapping = "/fusebox5" />
<cfset serviceFactory = createObject("java","coldfusion.server.ServiceFactory") />
<cfset mappings = serviceFactory.runtimeService.getMappings() />
<cfif StructKeyExists(mappings, mapping)>
<cfdirectory action="list" directory="#mappings[mapping]#" name="test">
<cfdump var="#test#">
<cfelse>
<p>Mapping not found</p>
</cfif>
注意:使用我現有的FB5映射進行測試。
編輯
提出了ExpandPath後一種方法更清晰。留下這個只作爲可能的替代解決方案。
試試這個(未測試):
<cfset expandedPath=getDirectoryFromPath(expandPath("/mymapping/*.*")) />
<cfdirectory action="list" directory="#expandedPath#" name="dirListing" />
<cfdump var="#dirListing#" />
您需要使用的形式/mymapping
,與前面的/
。並且您需要使用ExpandPath
來擴展「虛擬」目錄,如映射/mymapping
中所定義的那樣。這樣,你最終使用cfdirectory
並傳入一個物理目錄,一個實際存在於硬盤上的目錄,而不僅僅是在ColdFusion映射中。
<cfdirectory
name = "theQuery"
action = "list"
directory = "#ExpandPath("/mymapping")#"
/>
不錯!實際上與ACF和Railo合作。 – Sergii 2010-01-10 11:59:48
的映射是在CF管理員設置「邏輯路徑」是/ mymapping和「物理路徑」爲d:\家\ mydomain.com \ wwwroot的\的MyStuff 無論迄今已工作的建議之一,第一個不適用,因爲這不是在變量中設置的路徑。 – JonCav 2010-01-09 20:12:26