我想使用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