如何确认cffile写入成功?

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才会运行.如果我没有收到错误,我可以假设一切都好吗?如果可能的话,我更愿意直接检查.有没有人有想法?

Mig*_*l-F 5

您可以将cfdirectoryaction="list"和 一起使用filter="your-filename"来获取有关上传文件的以下信息:

如果 action = "list",cfdi​​rectory 将返回以下结果列,您可以在 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)


Ada*_*ron 5

如果<cffile>不起作用,它会通过抛出异常告诉你.如果它不这样做,你可以放心地认为它已经有效.不要过度设计你的应用程序.