フォームの送信後にファイルのアップロードがあり、ファイルのアップロードが完了した後にそこにあった古いファイルを削除する必要があります。フォームの送信、ファイルのアップロードなど、すべてが正常に機能します。しかし、通常、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>