关于ColdFusion映射的cfdirectory

时间:2010-01-09 17:16:19

标签: coldfusion mapping cfdirectory

我正在尝试使用CFDirectory来获取在ColdFusion Admin中创建的映射的文件列表。到目前为止,我无法填充列表,但如果我引用物理路径,则会显示完整的文件列表。

这是我正在使用的代码:

<cfoutput> <cfdirectory action="list" directory="mymapping" name="test"><cfdump var="#test#"> </cfoutput>

谢谢,

Jon C。

5 个答案:

答案 0 :(得分:2)

根据映射的设置方式 - 您可能需要为其提供完整的“虚拟”路径:

<cfdirectory action="list" directory="/mapping/folder" name="test">
<cfdump var="#test#">

答案 1 :(得分:1)

您需要使用/mymapping表单,前面有/。您需要使用ExpandPath来扩展映射/mymapping中定义的“虚拟”目录。这样,您最终使用cfdirectory并传入物理目录,该目录实际存在于硬盘驱动器上,而不仅仅是ColdFusion映射中。

<cfdirectory
    name = "theQuery"
    action = "list"
    directory = "#ExpandPath("/mymapping")#"
/>

答案 2 :(得分:0)

如果要在名为“mymapping”的变量中设置目录。它将如下:

<cfdirectory action="list" directory="#mymapping#" name="test">
<cfdump var="#test#"> 

答案 3 :(得分:0)

你没有说你使用的是哪个版本的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建议的后续方法更清晰。将此仅作为可能有用的替代解决方案。

答案 4 :(得分:0)

试试这个(未经测试):

<cfset expandedPath=getDirectoryFromPath(expandPath("/mymapping/*.*")) />
<cfdirectory action="list" directory="#expandedPath#" name="dirListing" />
<cfdump var="#dirListing#" />