CFDIRECTORY | |||||||||||
説明
ディレクトリに関する操作を管理します。 |
|||||||||||
カテゴリ
ファイル管理タグ | |||||||||||
シンタックス<cfdirectory action = "directory action" directory = "directory name" name = "query name" filter = "list filter" mode = "permission" sort = "sort specification" newDirectory = "new directory name" recurse = "yes"、"no"> |
|||||||||||
関連項目
cffile |
|||||||||||
ヒストリ
ColdFusion MX 7: recurse 属性 (Alpha 1 では recursive) と directory 結果セット列が追加されました。 ColdFusion MX:
|
|||||||||||
使用方法
複数のカスタマが使用するサーバーに ColdFusion アプリケーションを置く場合、未認可のユーザーがアップロードできる、またはこのタグで操作できるファイルおよびディレクトリについて、セキュリティを考慮する必要があります。ColdFusion タグを保護する方法については、『ColdFusion MX の設定と管理』を参照してください。 action = "list" の場合、cfdirectory によって次の結果列が返されます。これらの結果列は cfoutput タグ内で参照できます。
次の結果列は、標準 CFML 式で使用することができます。結果列名の先頭には、クエリー名が付けられます。 #mydirectory.name# #mydirectory.directory# #mydirectory.size# #mydirectory.type# #mydirectory.dateLastModified# #mydirectory.attributes# #mydirectory.mode#
filter 属性には、1 つまたは複数の文字のパターンを指定します。このパターンに一致する名前はすべて結果リストに含まれます。Windows システムではパターンマッチングの際に大文字と小文字は無視され、UNIX および Linux では大文字と小文字は区別されます。 次の 2 つの文字はパターン内で特別な意味を持ち、メタ文字と呼ばれます。
次の表に、パターンとそれに一致するファイル名の例を示します。
|
|||||||||||
例<!--- 例 1: ディレクトリの作成と名前変更 ColdFusion のエラーメッセージが生成されないようにするために、ディレクトリが存在することを確認します。 --- > <cfset newDirectory = "otherNewDir"> <cfset currentDirectory = GetDirectoryFromPath(GetTemplatePath()) & "newDir"> <!--- ディレクトリが存在するかどうかを確認します。 ---> <cfif DirectoryExists(currentDirectory)> <!--- TRUE の場合、ディレクトリの名前を変更します。 ---> <cfdirectory action = "rename" directory = "#currentDirectory#" newDirectory = "#newDirectory#" > <cfoutput> <p>ディレクトリが存在し、その名前は次のように変更されました : #newDirectory#</p> </cfoutput> <cfelse> <!--- FALSE の場合、ディレクトリを作成します。 ---> <cfdirectory action = "create" directory = "#currentDirectory#" > <cfoutput><p>ディレクトリが作成されました。</p></cfoutput> </cfif> <!--- 例 2: ディレクトリの削除 Coldfusion のエラーメッセージが生成されないようにするために、 ディレクトリが存在すること、およびそのディレクトリ内にファイルがないことを確認します。 ---> <cfset currentDirectory = GetDirectoryFromPath(GetTemplatePath()) & "otherNewDir"> <!--- ディレクトリが存在するかどうかを確認します。 ---> <cfif DirectoryExists(currentDirectory)> <!--- TRUE の場合、ディレクトリ内にファイルがあるかどうかを削除前に確認します。 ---> <cfdirectory action="list" directory="#currentDirectory#" name="myDirectory"> <cfif myDirectory.recordcount gt 0> <!--- TRUE の場合、ディレクトリからファイルを削除します。 ---> <cfoutput> <p>ファイルはこのディレクトリに存在します。ファイルを削除するか、削除するためのコードを 実行します。</P> </cfoutput> <cfelse> <!--- ディレクトリが空の場合 - ディレクトリを削除します。 ---> <cfdirectory action = "delete" directory = "#currentDirectory#"> <cfoutput> <p>ディレクトリが存在しますが、削除されました。</P> </cfoutput> </cfif> <cfelse> <!--- FALSE の場合、メッセージを送信するか、他の関数を実行します。 ---> <cfoutput><p>ディレクトリは存在しませんでした。</p></cfoutput> </cfif> <!--- 例 3: ディレクトリの一覧表示 次の例では、ディレクトリ名の配列、およびディレクトリのみに関するエントリを含む クエリーを作成します。 ---> <cfdirectory directory="C:/temp" name="dirQuery" action="LIST"> <!--- ディレクトリ名の配列を取得します。 ---> <cfset dirsArray=arraynew(1)> <cfset i=1> <cfloop query="dirQuery"> <cfif dirQuery.type IS "dir"> <cfset dirsArray[i]=dirQuery.name> <cfset i = i + 1> </cfif> </cfloop> <cfdump var="#dirsArray#"> <br> <!--- クエリーオブクエリー内のディレクトリ情報をすべて取得します。---> <cfquery dbtype="query" name="dirsOnly"> SELECT * FROM dirQuery WHERE TYPE='Dir' </cfquery> <cfdump var="#dirsOnly#"> |
ACTION | |
オプション | |
Default value: "List"
|
DIRECTORY | |
必須 | |
アクションを実行する対象ディレクトリの絶対パス名です。 次の例のように IP アドレスを使用できます。 <cfdirectory directory="//12.3.123.123/c_drive/" name="dirQuery" action="LIST"> |
NAME | |
action = "list" の場合は必須 | |
出力レコードセットの名前です。 |
FILTER | |
action = "list" の場合はオプション | |
返される名前に適用するファイル拡張子のフィルタです。たとえば、*.cfm などです。適用できるフィルタは 1 つだけです。 |
MODE | |
オプション | |
action = "create" と共に使用し、許可を表します。UNIX および Linux だけに適用されます。chmod コマンドの 8 進数値を使用し、所有者、グループ、および他の利用者それぞれに割り当てられます。例 :
|
SORT | |
オプション (action = "list" の場合に使用) | |
Default value: "ASC"
ディレクトリリストのソートに使用するクエリー列です。クエリー出力に含まれる列をカンマ区切りのリストで指定します。 列に条件を付ける場合は、次の値を使用します。
例 : sort = "directory ASC, size DESC, datelastmodified" |
NEWDIRECTORY | |
action = "rename" の場合は必須 | |
ディレクトリの新規名です。 |
RECURSE | |
オプション | |
Default value: "no"
ColdFusion でサブディレクトリ上のアクションを実行するかどうかを指定します。
action="list" および action="delete" の場合に有効です。 |