cfdirectory для сопоставления ColdFusion - PullRequest
2 голосов
/ 09 января 2010

Я пытаюсь использовать CFDirectory для получения списка файлов сопоставления, созданного в ColdFusion Admin.Пока я не могу получить список для заполнения, но если я ссылаюсь на физический путь, отображается полный список файлов.

Вот код, который я использую:

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

Спасибо,

Джон С.

Ответы [ 5 ]

2 голосов
/ 09 января 2010

В зависимости от того, как настроено сопоставление - может потребоваться указать ему полный «виртуальный» путь:

<cfdirectory action="list" directory="/mapping/folder" name="test">
<cfdump var="#test#">
1 голос
/ 10 января 2010

Вам нужно использовать форму /mymapping, с / впереди.И вам нужно использовать ExpandPath, чтобы расширить «виртуальный» каталог, как определено в отображении /mymapping.Таким образом, вы в конечном итоге используете cfdirectory и передаете физический каталог, который фактически существует на жестком диске, а не только в отображениях ColdFusion.

<cfdirectory
    name = "theQuery"
    action = "list"
    directory = "#ExpandPath("/mymapping")#"
/>
0 голосов
/ 10 января 2010

Попробуйте это (не проверено):

<cfset expandedPath=getDirectoryFromPath(expandPath("/mymapping/*.*")) />
<cfdirectory action="list" directory="#expandedPath#" name="dirListing" />
<cfdump var="#dirListing#" />
0 голосов
/ 10 января 2010

Вы не сказали, какую версию 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 намного понятнее. Оставляя это единственное возможное полезное альтернативное решение.

0 голосов
/ 09 января 2010

Если вы устанавливаете каталог в переменной с именем «mymapping». Это было бы следующим образом:

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