我遇到coldfusion11网站的问题,在某些情况下,我创建和发送报告文件的尝试失败,显然是由于权限问题。我无法在我的测试/开发环境中重新创建问题所以我需要了解实时修复的情况,我不能只是在生产中随意更改代码。当前代码使用APPEND操作创建文件,如下所示:
<cfset f_dir = EXCEL_PATH >
<cfset f_name = CreateUUID() & ".csv">
<cffile action="APPEND" file="#f_dir##f_name#" output="My Report "
addnewline="Yes">
<cffile action="APPEND" file="#f_dir##f_name#"
output="Title,#attributes.title#" addnewline="Yes">
代码中的其他地方是使用WRITE作为第一个cffile动作的类似函数,如下所示:
<cfset f_dir = EXCEL_PATH >
<cfset f_name = CreateUUID() & ".csv">
<cffile action="WRITE" file="#f_dir##f_name#" output="My Report "
addnewline="Yes">
<cffile action="APPEND" file="#f_dir##f_name#"
output="Title,#attributes.title#" addnewline="Yes">
首先使用WRITE的代码没有失败,这导致了我的问题: 在coldfusion 11中创建一个带有action =“APPEND”和action =“WRITE”的文件是否有区别?
答案 0 :(得分:2)
尝试按如下方式修改代码:
<cflock name="#f_name#">
<cfif NOT fileexists(f_dir & f_name)>
... do your WRITE action>
</cfif>
</cflock>
<cflock name="#f_name#">
.... do your APPEND action - you can be sure your file exists at this point.
</cflock>
注意,我通常使用命名锁来序列化这两个动作。有时您的代码会因文件句柄而未完全释放。不典型,但如果您的磁盘发生颠簸,可能会发生这种情况。