5

私はコールドフュージョンをあまり使用していませんが、いくつかのコードにパッチを当てる必要があります。基本的に、アップロードしたファイルが存在するかどうかを確認して確認しようとしています。存在する場合は、変数を1増やします。次に、一意のファイル名が得られるまで繰り返します。何らかの理由で、FileExist() を使用する適切な方法がわかりません。一部のフォーラムでは len() で使用することを提案していますが、それらは 2006 年のものであり、私がそうすると常に実現するようです。また、http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c66.htmlを見ると、はいまたはいいえのいずれかが返されると表示されます。さまざまな方法で結果を確認しようとしましたが、いいえ幸運。

これは、私が扱っているコードの一部です。application.filepath は、expandpath() を格納するアプリケーション ファイル内の単なる変数です。

<cffile action="upload" destination="#Application.filePath#ListingsGallery/" filefield="iconImage" nameconflict="makeunique">
<cfset iconPlace = #cffile.serverfile#>
<cfset myExt = listLast(iconPlace,".")>
<cfset i = 1 >
<cfset myVar = false>
<cfloop condition="myVar EQ false">

    <cfset newIconName = "iconPhoto" & i &"."& myExt>
    <cfset iconName = Application.filePath & "ListingsGallery/" & #newIconName#>
<cfoutput>#iconName#</cfoutput><br />//just checking to see if it is the correct path, it is.

    <cfif FileExists(iconName) EQ 'Yes'>
         <cfoutput>#myVar#</cfoutput> //checking the value, it never hits here.
    <cfelse>
             <cfoutput>#myVar#</cfoutput><br /> //checking the value, it always hits here.
    <cfset myVar = true>        
             <cfoutput>#myVar#</cfoutput> //Again check the value.
    </cfif>
<cfset i++>
</cfloop>                     
<cffile action="rename" source="#Application.filePath#ListingsGallery/#iconPlace#" destination="#Application.filePath#ListingsGallery/#newIconName#">

UNIX サーバーの絶対パスは、/var/www/website フォルダー名/ などのようなものです... 正しいですか? これが絶対サーバー パスです。coldfusion のドキュメントでは、少なくともマイクロソフトの絶対サーバー パスが指定されているように見えるので、これが必要であると想定しています。

編集 --------------------------- PS: 1 人しか信用できません。分前。笑...

4

4 に答える 4

5

FileExists() はブール値を返します。タイプミスが修正されたので、これはうまくいくはずです:

<cfif fileExists(TheFile)>
  // do this
<cfelse>
  // do that
</cfif>
于 2012-04-30T20:05:19.423 に答える
3

application.Filepath が正しいファイルパスであると仮定すると、正しい軌道に乗っています。アップロード ディレクトリが Web ルートの下にあるようです。セキュリティのために Web ルートの外に移動することを検討してください。タイプミスのない保証されたファイルパスを作成する方法として #expandPath('.')# を見てください:) また、コードの移植性を高めます。

私の目には、上記のコードが機能します。参考までに-「EQ 'YES'」は必要ありません。次のようにすれば問題ありません。

<Cfif FileExists(iconName)>...

あなたもできる

condition="NOT myVar">

CF でロジック コードを処理するには、いくつかの方法があります。

fileExists() がヒットしない場合は、名前の変更を詳しく見てください。あなたはエラーを投げていますか?

于 2012-04-30T20:06:20.440 に答える
3

まだ回答にメモを追加することはできませんが、関数のブール値評価に関しては CF が型がないことを OP に知らせたかったのです。0 は「いいえ」と同じであり、「偽」と同じですが、正の数は「はい」と同じであり、「真」と同じです。

于 2012-04-30T21:08:57.860 に答える
-1

バックエンドのセキュリティがあるのは素晴らしいことですが、これはフロントエンドで処理されるべきだったので、不要な値が得られることはありません。新しい HTML5 入力パターンでは、これが送信されることはありません。そのため、バックエンドでこれを修正する必要はありません。

http://www.w3schools.com/tags/att_input_pattern.asp

于 2016-06-23T17:32:52.077 に答える