1

我正在使用 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>

当我写完文件后,我想向用户确认这件事发生了。对于一个新文件,我可以使用 IsDefined 来检查它是否存在。但我想不出一种方法来检查已更新的现有文件。我考虑过对 cffile 进行 try/catch,但 catch 仅在似乎没有任何问题时才起作用。如果我没有收到错误,我可以假设一切都很好吗?如果可能的话,我更喜欢直接检查。有人有想法吗?

4

3 回答 3

5

如果<cffile>不起作用,它会通过抛出异常来告诉你。如果它不这样做,你可以放心地假设它已经工作了。不要过度设计您的应用程序。

于 2013-06-26T07:23:00.303 回答
4

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

如果 action = "list",cfdi​​rectory 返回以下结果列,您可以在 cfoutput 标记中引用这些列:

  • name:目录条目名称。条目“。” 和“..”不返回。
  • 目录:包含条目的目录。
  • size:目录条目大小。
  • type:文件类型:file,为一个文件;dir,用于目录。
  • dateLastModified:上次修改条目的日期。
  • attributes:文件属性(如果适用)。
  • 模式:空列;保留以向后兼容 UNIX 上的 ColdFusion 5 应用程序。

你感兴趣的是dateLastModified专栏。

因此,您应该能够执行以下操作:

<cfdirectory action="list" name="dirQuery" directory="C:/var/www/reports/" filter="#thefile#.cfm">

然后您可以转储该结果以查看您可以使用哪些信息:

<cfdump var="#dirQuery#">

dateLastModified可以像这样访问该列:

<cfoutput>#dirQuery.dateLastModified#</cfoutput>
于 2013-06-25T19:30:38.653 回答
2

在更新文件之前使用CFDirectory获取dateLastModified文件,然后再更新。如果它们不相同,则已更新。

于 2013-06-25T19:28:32.143 回答