2

CFDirectory を使用して、ColdFusion Admin で作成されたマッピングのファイル リストを取得しようとしています。これまでのところ、リストにデータを入力することはできませんが、物理パスを参照すると、完全なファイル リストが表示されます。

私が使用しているコードは次のとおりです。

<cfoutput> <cfdirectory action="list" directory="mymapping" name="test"><cfdump var="#test#"> </cfoutput>

ありがとう、

ジョン C.

4

5 に答える 5

2

マッピングの設定方法によっては、完全な「仮想」パスを指定する必要がある場合があります。

<cfdirectory action="list" directory="/mapping/folder" name="test">
<cfdump var="#test#">
于 2010-01-09T18:37:18.560 に答える
1

/mymappingを前にして、フォームを使用する必要があります/ExpandPathそして、マッピングで定義されているように、「仮想」ディレクトリを展開するために使用する必要があります/mymappingcfdirectoryこうすることで、ColdFusion マッピングだけでなく、ハード ドライブ上に実際に存在する物理ディレクトリを使用して渡すことになります。

<cfdirectory
    name = "theQuery"
    action = "list"
    directory = "#ExpandPath("/mymapping")#"
/>
于 2010-01-09T22:53:32.713 に答える
0

どのバージョンの CF を使用しているかは言わなかったので、Goyix の解決策は部分的に正しいです。Railo では機能しますが、ACF では機能しません。

ACF8+ では、ServiceFactory を使用して実際のパスを抽出できます。コードは次のようになります。

<cfset mapping = "/fusebox5" />

<cfset serviceFactory = createObject("java","coldfusion.server.ServiceFactory") />
<cfset mappings = serviceFactory.runtimeService.getMappings() />

<cfif StructKeyExists(mappings, mapping)>
    <cfdirectory action="list" directory="#mappings[mapping]#" name="test">
    <cfdump var="#test#">
<cfelse>
    <p>Mapping not found</p>
</cfif>

注: テストには既存の FB5 マッピングを使用しました。

編集

ExpandPath を使用した後で提案された方法は、はるかに明確です。これは、おそらく有用な代替ソリューションとしてのみ残します。

于 2010-01-09T22:15:16.593 に答える
0

これを試してください(テストされていません):

<cfset expandedPath=getDirectoryFromPath(expandPath("/mymapping/*.*")) />
<cfdirectory action="list" directory="#expandedPath#" name="dirListing" />
<cfdump var="#dirListing#" />
于 2010-01-09T22:29:49.520 に答える
0

「mymapping」という変数にディレクトリを設定している場合。次のようになります。

<cfdirectory action="list" directory="#mymapping#" name="test">
<cfdump var="#test#"> 
于 2010-01-09T18:33:28.867 に答える