使用cfdirectory时,如何在不指定我想要查看的所有文件的文件扩展名的情况下排除所有cfm文件并列出所有其他文件,或者在不查询查询的情况下排除特定文件(如index.html)?
我正在寻找类似下面的内容,请注意filter属性.
<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!index.html" sort="name ASC" listinfo="name">
Run Code Online (Sandbox Code Playgroud)
要么:
<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!*.cfm" sort="name ASC" listinfo="name">
Run Code Online (Sandbox Code Playgroud) 我以前<cfdirectory>只使用目录,但我需要在用cfscript编写的UDF中执行此操作,因此我需要使用DirectoryList().看来我需要获取所有内容,然后手动访问结果过滤目录.但是,有一个过滤器参数...它可以用于仅过滤目录吗?如果是这样,过滤器会是什么?
我还没有找到只返回目录的示例,并且文档不清楚可以过滤的内容(*.txt除外).
我想根据传递给 cfdirectory 的过滤条件吐出略有不同的 html。
这是我的 cfml:
<cfdirectory
directory="#dirName#"
name="fileList"
action="list"
type="file"
filter="*.jpg|*.jpeg|*.png|*.gif|*.mp4"
>
<ul id="content">
<cfoutput>
<cfloop query="fileList">
<cfif filter NEQ '*.mp4'> // I guess this is not possible and is throwing the error
<li class="content image">
<img src="img/#name#" />
</li>
</cfif>
<cfelse>
<li class="video image">
<video controls="controls">
<source src="img/#name#" type="video/mp4">
</video>
</li>
</cfif>
</cfloop>
</cfoutput>
</ul>
Run Code Online (Sandbox Code Playgroud)
我认为我不能简单地访问filter内部cfif,但我不确定如何对其进行剥皮。它是否需要存储在循环外的变量中?
非常感谢任何帮助
在我的应用程序中,用户上传照片,cfc调整照片大小,创建新图像并将新图像调整为缩略图.麻烦的是,这个功能在游戏早期没有提供.我现在想看看images目录,找出哪些图像没有缩略图.
我想,我可以用cfdirectory输出两个目录的结构,然后遍历这些文件只有在图像存在,而不是在缩略图目录,然后运行一个函数来调整图像,并将它们发送到缩略图目录.
这有缺陷吗?有没有更简单的方法?
冷敷的新手,新的正则表达式......
我有一个文件目录,以"some"命名后跟一个13位数,后跟下划线,ID和文件结尾如下:
some0000000000000_ID.jpg
Run Code Online (Sandbox Code Playgroud)
ID可以是任何字符串.
我如何使用正则表达式获取ID?我想我会寻找这样的东西,它捕获下划线和文件结束点之间的所有内容:
_\A[A-Z]*[a-z]*[0-9]*$
Run Code Online (Sandbox Code Playgroud)
但我真的没有到达任何地方.有人能指出我正确的方向吗?
谢谢!
编辑:
我最终这样做,这是hack-ish但很好地工作:
<cfset cropFront = #ListRest(ReReplaceNoCase(name, ".png|.jpg", ""), "_")#>
<cfset cropFull = #ListFirst(ReReplaceNoCase( cropFront, "xxxxx", ""), "." )#>
Run Code Online (Sandbox Code Playgroud)
对其他人也许有用!
我有一些代码将视频上传到服务器,但首先检查上传目录是否存在,如果没有则创建它.
<cfif not directoryExists(tempUploadVideoDIR)>
<cfdirectory action="create" directory="#tempUploadVideoDIR#">
</cfif>
Run Code Online (Sandbox Code Playgroud)
我没有在我的文件结构中找到上传的文件或目录,所以我在目录上运行了一个"list"函数:
<cfdirectory name="getFiles" directory="#tempUploadVideoDIR#" action="list">
<cfdump var="#getFiles#">
Run Code Online (Sandbox Code Playgroud)
它列出了我上传的视频完整的目录内容.
我检查了路径,它们都是正确的.我肯定在正确的服务器上工作.
哪个是目录?
localhost,CF9.02,IIS7.5
我发现很难理解这一点.如何将结果限制为50.假设如果在目录中我有1000个文件,我怎么能限制它以便只循环50个文件.
<cfdirectory action="list" directory="#ExpandPath('/downloaded/')#" name="listRoot" filter="*.xml" recurse="false" sort="datelastmodified asc">
<cfoutput>
<cfloop query="listRoot" from="1" to="50" index="i">
....
</cfloop>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我收到以下错误消息
标签CFLOOP的属性验证错误.