【问题标题】:ColdFusion could not delete the file for an unknown reasonColdFusion 因未知原因无法删除文件
【发布时间】:2013-02-17 06:04:49
【问题描述】:

我正在尝试删除并重新创建一个测试文件,但出现以下错误。谁能告诉我为什么会这样?

错误:

ColdFusion could not delete the file e:\sample\test2.html for an unknown reason.

代码:

<cfif FileExists("e:\sample\test2.html")>
   <cffile action="delete"file="e:\sample\test2.html"><br>
   <p>deleted the file </p>
<cfelse>
   <p>Sorry, can't delete the file - it doesn't exist.</p>
</cfif>

<cfset createObject("java", "java.lang.Thread").sleep(JavaCast("int", 90000))>
<cfsavecontent variable="HTML">
    <cfinclude template="noticeEmail.cfm">
</cfsavecontent>        

<cffile action="WRITE"  attributes = "normal" nameconflict="Overwrite"  
      file="e:\sample\test2.html" output="#HTML#">

【问题讨论】:

  • 这与你的错误无关,但nameconflict属性不适用于action="write",只能上传。

标签: coldfusion coldfusion-9


【解决方案1】:

我要检查的第一件事是运行 ColdFusion 的用户的权限。
我不知道您是如何运行 CF 或在什么样的环境中运行的,但假设这是一个本地开发环境,在 Windows 机器上并且将 ColdFusion 作为服务运行:

  • 在服务管理器中找到ColdFusion服务(开始->运行-> services.msc)
  • 右键单击 ColdFusion 服务并在登录选项卡中查找“运行的身份”。(根据安装方式,该服务可以命名为多种名称,但 寻找“ColdFusion 9 Application Server”,任何以 JRun 或 Macromedia)
  • 如果这不是本地系统,那么您需要确认用户对 e:\sample\test2.html 具有读/写权限

其他可能导致错误的事情,其他程序是否会锁定此文件,文件创建后会发生什么(是否仅通过 ColdFusion 创建)

您还可以发布您收到的实际错误吗?
如果是“抱歉,无法删除文件 - 它不存在”。那么这是由于您在顶部进行了检查以确认文件是否存在。

最后,您在上面粘贴的代码似乎每行都缺少第一个字符,值得修复此问题,以便其他人可以更轻松地复制和粘贴代码。

【讨论】:

  • 仅供参考,帖子已修改以添加缺少的字符。
  • 我遇到了同样的问题,结果文件被锁定,因为 CF 仍在上传它,当我去删除它时。
【解决方案2】:

我遇到了同样的问题,但我找到的答案都没有适用。虽然我的文件通过了 FileExists 测试,但实际删除仍然失败。我正在使用变量构建文件名:

<cfset sFilename = REQUEST.SubscriberWebFiles
                        & form.SubscriberID & "\Attachments\" 
                        & qryAttachmentsTrash.AttachmentName>

我用 Trim 包装了代码:

<cfset sFilename = Trim(REQUEST.SubscriberWebFiles
                       & form.SubscriberID & "\Attachments\" 
                       & qryAttachmentsTrash.AttachmentName)>

问题神奇地消失了!

【讨论】:

  • 我也试过了,是的,我的问题也神奇地消失了!!奇怪,但你去。在 Win7 Pro 上的 CF10 上使用 directoryDe​​lete()。但是,我确实注意到,如果单击目录中的一个文件(不打开它),然后完全单击另一个文件夹中的文件,我的 directoryDe​​lete() 第一次失败并出现未知错误,但随后执行只要我使用 Trim(),随后的 directoryDe​​lete() 和 directoryCreate() 都可以完美运行。没有 Trim() 我在相同的测试中得到了持久的“未知错误”。仅供参考。
  • 即“相同的测试”是指重复创建和删除文件夹(递归)
【解决方案3】:

您的网络服务器/操作系统可能保留了该文件。您可以尝试在不打开文件的情况下创建文件,然后查看是否将其删除吗?所以只需创建一个文件,然后立即将其删除。

【讨论】:

    【解决方案4】:

    您可以使用此代码通过 ColdFusion 删除 MS Word 文档

    <cfif FileExists( WordFilePath &".doc")>
       <cffile action="delete"
           file="#WordFilePath#.doc">
    <cfelse>
        Sorry, can't delete the file - it doesn't exist.
    </cfif>
    

    【讨论】:

    • 是的,这正是他已经在做的事情:) 但是文件由于某种原因被锁定,所以删除失败。此外,您的代码 sn-p 缺少开头的 &lt; 符号(现已修复)。要发布 CFML sn-ps,只需使用代码示例选项,即“{}”
    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多