获取相对于当前页面的各个子目录中的文件数 - ColdFusion
Get number of files in various subdirectories relative to the current page - ColdFusion
我有一些我认为几乎可以工作的 cf 代码。
我有以下结构:
work
--still-life
--portraits
--personal
这些文件夹中的每一个都具有相同的结构:
still-life
--img-s
--img-m
--img-l
我想知道第一个目录 (img-s)
中有多少文件,例如我在 /still-life/index.cfm
上的每个页面。
我一直在尝试实现 cfdirectory,但无济于事,然后我发现这段代码几乎可以工作:
<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>
<cfdirectory
directory="#GetDirectoryFromPath(GetTemplatePath())#"
name="myDirectory"
sort="name ASC, size DESC, datelastmodified">
<!---- Output the contents of the cfdirectory as a cftable ----->
<cftable
query="myDirectory"
colSpacing = "10"
htmltable
colheaders>
<cfcol
header="NAME:"
align = "Left"
width = 20
text="#Name#">
<cfcol
header="SIZE:"
align = "Left"
width = 20
text="#Size#">
<cfcol
header="date last modified:"
align = "Left"
width = 20
text="#datelastmodified#">
</cftable>
我实际上在输出中得到了这个:
directory="{URL}\work\portraits\"
NAME: SIZE: date last modified:
img-l 0 {ts '2015-06-08 11:56:35'}
img-m 0 {ts '2015-06-08 11:56:35'}
img-s 0 {ts '2015-06-08 11:56:36'}
index.cfm 134 {ts '2015-06-08 11:56:36'}
所以我认为它非常接近。我想知道是否需要循环遍历子目录?
如果有帮助,我只真正关心 img-s 目录,文件应始终为 jpg。
我确实尝试实现了 here and here 中的一些代码,并尝试实现了 ExpandPath 函数(但我的 CF 经验相对有限)。
编辑
我已将此添加到 cftable 的底部:
<cfcol
header="Count"
align="left"
width="20"
text="#recordCount#">
现在我的输出是这样的:
NAME: SIZE: date last modified: Count
img-l 0 {ts '2015-06-08 11:56:34'} 4
img-m 0 {ts '2015-06-08 11:56:34'} 4
img-s 4096 {ts '2015-06-08 14:10:33'} 4
index.cfm 1276 {ts '2015-06-08 14:13:53'} 4
所以至少它现在正在读取目录的文件大小。
编辑 2
仅供@ScottStroz 使用,这是当前代码:
<cfset filters = "*.jpg">
<cfdirectory
directory="#ExpandPath('.')#/img-s"
name="getSubDir"
recurse = "yes"
filter = "#filters#">
<cfset imgArray=arraynew(1)>
<cfset i=1>
<cfset imgDir="img-s/">
<cfset imgDirM="img-m/">
<cfloop query="getSubDir">
<cfset imgArray[i]=getSubDir.name>
<cfset i = i + 1>
</cfloop>
<ul class="workNav clearfix">
<cfloop from="1" to="#arrayLen(imgArray)#" index="i">
<cfoutput>
<li><a href="#imgDirM##imgArray[i]#"><img src="#imgDir##imgArray[i]#"/></a></li>
</cfoutput>
</cfloop>
</ul>
此代码应该有效。
<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>
<cfdirectory
directory="#GetDirectoryFromPath(GetTemplatePath())#"
name="myDirectory"
sort="name ASC, size DESC, datelastmodified"
recurse = "yes">
<!---- Output the contents of the cfdirectory as a cftable ----->
<cftable
query="myDirectory"
colSpacing = "10"
htmltable
colheaders>
<cfcol
header="Count"
align="left"
width="20"
text="#recordCount#">
<cfcol
header="NAME:"
align = "Left"
width = 20
text="#Name#">
<cfcol
header="SIZE:"
align = "Left"
width = 20
text="#Size#">
<cfcol
header="date last modified:"
align = "Left"
width = 20
text="#datelastmodified#">
<cfcol
header="Directory"
align = "Left"
width = 20
text="#directory#">
</cftable>
我有一些我认为几乎可以工作的 cf 代码。
我有以下结构:
work
--still-life
--portraits
--personal
这些文件夹中的每一个都具有相同的结构:
still-life
--img-s
--img-m
--img-l
我想知道第一个目录 (img-s)
中有多少文件,例如我在 /still-life/index.cfm
上的每个页面。
我一直在尝试实现 cfdirectory,但无济于事,然后我发现这段代码几乎可以工作:
<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>
<cfdirectory
directory="#GetDirectoryFromPath(GetTemplatePath())#"
name="myDirectory"
sort="name ASC, size DESC, datelastmodified">
<!---- Output the contents of the cfdirectory as a cftable ----->
<cftable
query="myDirectory"
colSpacing = "10"
htmltable
colheaders>
<cfcol
header="NAME:"
align = "Left"
width = 20
text="#Name#">
<cfcol
header="SIZE:"
align = "Left"
width = 20
text="#Size#">
<cfcol
header="date last modified:"
align = "Left"
width = 20
text="#datelastmodified#">
</cftable>
我实际上在输出中得到了这个:
directory="{URL}\work\portraits\"
NAME: SIZE: date last modified:
img-l 0 {ts '2015-06-08 11:56:35'}
img-m 0 {ts '2015-06-08 11:56:35'}
img-s 0 {ts '2015-06-08 11:56:36'}
index.cfm 134 {ts '2015-06-08 11:56:36'}
所以我认为它非常接近。我想知道是否需要循环遍历子目录?
如果有帮助,我只真正关心 img-s 目录,文件应始终为 jpg。
我确实尝试实现了 here and here 中的一些代码,并尝试实现了 ExpandPath 函数(但我的 CF 经验相对有限)。
编辑
我已将此添加到 cftable 的底部:
<cfcol
header="Count"
align="left"
width="20"
text="#recordCount#">
现在我的输出是这样的:
NAME: SIZE: date last modified: Count
img-l 0 {ts '2015-06-08 11:56:34'} 4
img-m 0 {ts '2015-06-08 11:56:34'} 4
img-s 4096 {ts '2015-06-08 14:10:33'} 4
index.cfm 1276 {ts '2015-06-08 14:13:53'} 4
所以至少它现在正在读取目录的文件大小。
编辑 2
仅供@ScottStroz 使用,这是当前代码:
<cfset filters = "*.jpg">
<cfdirectory
directory="#ExpandPath('.')#/img-s"
name="getSubDir"
recurse = "yes"
filter = "#filters#">
<cfset imgArray=arraynew(1)>
<cfset i=1>
<cfset imgDir="img-s/">
<cfset imgDirM="img-m/">
<cfloop query="getSubDir">
<cfset imgArray[i]=getSubDir.name>
<cfset i = i + 1>
</cfloop>
<ul class="workNav clearfix">
<cfloop from="1" to="#arrayLen(imgArray)#" index="i">
<cfoutput>
<li><a href="#imgDirM##imgArray[i]#"><img src="#imgDir##imgArray[i]#"/></a></li>
</cfoutput>
</cfloop>
</ul>
此代码应该有效。
<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>
<cfdirectory
directory="#GetDirectoryFromPath(GetTemplatePath())#"
name="myDirectory"
sort="name ASC, size DESC, datelastmodified"
recurse = "yes">
<!---- Output the contents of the cfdirectory as a cftable ----->
<cftable
query="myDirectory"
colSpacing = "10"
htmltable
colheaders>
<cfcol
header="Count"
align="left"
width="20"
text="#recordCount#">
<cfcol
header="NAME:"
align = "Left"
width = 20
text="#Name#">
<cfcol
header="SIZE:"
align = "Left"
width = 20
text="#Size#">
<cfcol
header="date last modified:"
align = "Left"
width = 20
text="#datelastmodified#">
<cfcol
header="Directory"
align = "Left"
width = 20
text="#directory#">
</cftable>