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() は、Web サイトのパスから物理パス (* nix & windows) への変換を行います。

于 2012-05-16T03:51:26.417 に答える