在使用cfdirectory时,我如何排除所有cfm文件并列出所有其他文件,而不指定我想要查看的所有文件的扩展名,或者排除特定的文件,如index.html而不执行查询查询?
我正在寻找类似下面这样的东西,注意filter属性。
<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!index.html" sort="name ASC" listinfo="name">或者:
<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!*.cfm" sort="name ASC" listinfo="name">发布于 2009-07-07 11:45:20
如果您正在尝试执行排除,则filter属性是无用的。一个恰当的例子:就在昨天,我想使用cfdirectory来抓取所有的子目录,但是EXLCUDE任何以句点开头的目录“。这样我就可以排除像".svn“和".git”这样的东西。不用说,我到处找也找不到答案。
最后,我在循环中使用了一些条件逻辑:
<cfloop query="mydir">
<cfif left(name, 1) neq ".">
<!--- do some code --->
</cfif>
</cfloop>这就完成了任务。当然,我也可以使用QoQ,但对我来说,添加所有开销来过滤掉以句点开头的目录似乎很愚蠢。
底线是,是的,当涉及到cfdirectory的排除过滤时,我们搞砸了,但没有理由你不能使用你的想象力和一点代码来获得你想要的结果。
发布于 2009-07-06 21:06:13
不,不能单独使用cfdirectory来排除文件。筛选器属性仅指定要包含的文件,并使用DOS样式的通配符(*和?)。
最简单的解决方案可能是使用cfquery进行过滤。
<cfquery name="qryFiles" dbtype="query">
SELECT * FROM qryFiles
WHERE name not like '%.cfm'
</cfquery>发布于 2009-07-07 11:59:12
您可以创建一个运行CF目录的自定义标记,然后循环遍历结果(就像您所做的那样),使用您的结果构建一个新的查询或结构。这将使它在其他情况下的可重用性稍高一些。
https://stackoverflow.com/questions/1089121
复制相似问题