0

我在提交表单后上传了文件,我需要删除文件上传完成后的旧文件。一切正常,表单提交,文件上传。但一般来说 Coldfusion 似乎无法识别旧文件。使用fileExist()命令或实际<cffile action="delete">命令。同时,当我输出我用于两者的变量fileExist()和删除之前,我点击这些行,我导航到我的 ftp 中的确切路径,文件实际上在那里,在表单提交之前和之后。上传的文件不应覆盖以前的照片,因为它们的名称完全不同并且makeunique正在使用中。如果有任何帮助,我将不胜感激。

这是我提交表单后的代码片段(我现在只是想让 image1 工作,但其他 3 个图像显示相同的行为。

此行执行<cfoutput>#variables.erase1#</cfoutput><br />hello2不执行:

<cfquery name="getPreviousImage" datasource="#Application.datasourceName#">
        SELECT 
            image1, image2, image3, image4
        FROM 
            testaCustomers
        WHERE 
            RecordID = <cfqueryparam value="#form.ID#" cfsqltype="CF_SQL_INTEGER" maxlength="50">

</cfquery> 

<cfset variables.oldImage1 = getPreviousImage.image1>
<cfset variables.oldImage2 = getPreviousImage.image2>
<cfset variables.oldImage3 = getPreviousImage.image3>
<cfset variables.oldImage4 = getPreviousImage.image4>

<cfset variables.image1 = getPreviousImage.image1>
<cfset variables.image2 = getPreviousImage.image2>
<cfset variables.image3 = getPreviousImage.image3>
<cfset variables.image4 = getPreviousImage.image4>

<cfif #form.image1# NEQ ""> 

    <cffile action="upload" destination="#Application.filePath#Pics/" filefield="image1" nameconflict="makeunique" result="upload1">

    <cfif isDefined ("upload1.serverFile")>
        <cfset variables.image1 = #upload1.serverFile#> 
    </cfif>

   <cfset variables.erase1 = Application.filePath & "Pics/" & variables.oldImage1>
   <cfoutput>#variables.erase1#</cfoutput><br />

    <cfif fileExists(variables.erase1)>
        hello2
        <cffile action="delete" file="#variables.erase1#">
    </cfif>
</cfif>
4

2 回答 2

1

检查您的文件权限。运行您的应用程序服务的帐户可能对您尝试访问的文件没有读取权限。否则,您的路径可能不正确。

于 2012-05-15T20:21:06.237 回答
0

您可能必须像使用 Trim() 一样将图像路径包装在 ExpandPath() 函数中;

<cfif fileExists(ExpandPath(Trim(variables.erase1)))>
    ...code...
</cfif>

FileExists() 需要物理路径而不是 Web 根路径。ExpandPath() 将网站路径转换为物理路径(*nix & windows)。

于 2012-05-16T03:51:26.417 回答