Bet*_*ock 1 coldfusion cffile cfml
我正在使用cffile创建新文件或更新现有文件,具体取决于用户请求的内容.请求来自前一个过程的表单,因此涉及cffile的代码如下所示:
<cfset thefile = "#form.dyn#">
<cfoutput>
<cfsavecontent variable = "testvar">
#form.editor1#
</cfsavecontent>
<cffile action = "write"
file = "/var/www/reports/#thefile#.cfm"
output = "#testvar#">
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
当我写完文件后,我想向用户确认发生这种情况.对于一个新文件,我可以使用IsDefined来检查它是否存在.但我想不出一种方法来检查已更新的现有文件.我考虑过cffile上的try/catch,但只有在看上去没有出错的情况下,catch才会运行.如果我没有收到错误,我可以假设一切都好吗?如果可能的话,我更愿意直接检查.有没有人有想法?
您可以将cfdirectory与action="list"和 一起使用filter="your-filename"来获取有关上传文件的以下信息:
如果 action = "list",cfdirectory 将返回以下结果列,您可以在 cfoutput 标记中引用这些结果列:
- 名称:目录条目名称。条目“.” 和“..”不被返回。
- 目录:包含条目的目录。
- size:目录条目大小。
- type:文件类型:file,针对文件;dir,目录。
- dateLastModified:上次修改条目的日期。
- 属性:文件属性(如果适用)。
- 模式:空列;保留是为了向后兼容 UNIX 上的 ColdFusion 5 应用程序。
您感兴趣的是dateLastModified专栏。
所以你应该能够做类似的事情:
<cfdirectory action="list" name="dirQuery" directory="C:/var/www/reports/" filter="#thefile#.cfm">
Run Code Online (Sandbox Code Playgroud)
然后您可以转储该结果以查看您可以使用哪些信息:
<cfdump var="#dirQuery#">
Run Code Online (Sandbox Code Playgroud)
该dateLastModified列可以通过以下方式访问:
<cfoutput>#dirQuery.dateLastModified#</cfoutput>
Run Code Online (Sandbox Code Playgroud)