2009-07-06 3 views
5

cfdirectory를 사용할 때 참조하려는 모든 파일의 파일 확장명을 지정하지 않고 모든 cfm 파일을 제외하고 다른 모든 파일을 나열하거나 쿼리 쿼리를 수행하지 않고 index.html과 같은 특정 파일을 제외 할 수 있습니까?cfdirectory를 사용하여 파일을 어떻게 든 제외시킬 수 있습니까?

다음과 같은 것을 찾고 있는데 필터 속성에 주목하십시오.

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!index.html" sort="name ASC" listinfo="name"> 

나 :

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!*.cfm" sort="name ASC" listinfo="name"> 
+2

QoQ 사용에 반대하는 이유는 무엇입니까? 꽤 강력한 도구입니다. –

+0

QoQ 또는 cfif 문을 작성하는 대신 하나의 문으로 작업을 완료하는 데 사용할 수있는 문서화되지 않은 필터 항목이 있는지 궁금합니다. – Jayson

답변

6

필터 속성은 제외를 시도 할 때 쓸모가 없습니다. 예를 들면 어제 어제 cfdirectory를 사용하여 모든 하위 디렉토리를 가져 오려고했지만 EXLCUDE 마침표 "." 그래서 나는 ".svn"과 ".git"같은 것을 제외 할 수 있었다. 말할 것도없이 나는 모든 곳을 뒤져서 대답을 찾을 수 없었다. 난 그냥 내 루프에서 일부 조건부 논리를 사용하여 결국 결국

: 일을 가지고

<cfloop query="mydir"> 
    <cfif left(name, 1) neq "."> 
    <!--- do some code ---> 
    </cfif> 
</cfloop> 

. 물론 나는 QoQ를 사용할 수 있었지만, 그 기간 동안 시작된 디렉토리를 걸러 내기 위해 모든 오버 헤드를 추가하는 것은 어리석은 것처럼 보였다.

결론은 cfdirectory로 제외 필터링에 관해서는 망설이고 있지만 원하는 결과를 얻으려면 상상력과 약간의 코드를 사용할 수 없습니다.

+0

그것이 내가 두려워했던 문제입니다.내가 원하는 것을 얻기 위해 모든 종류의 cfif 또는 QoQ 문을 사용할 필요가 없기를 바랬습니다. 아마 어도비는 CF9에서 우리를 놀라게 할 것입니다. Railo 또는 OpenBD가 cfdirectory 태그에 대해 더 나은 필터를 가지고 있는지 궁금합니다. – Jayson

+0

네,이 모든 여분의 논리를 추가하는 것은 짜증나지만, 모든 것을 udf로 패키지하고 템플릿에서 호출하면 감옥 강간의 느낌이 사라집니다. O_o – rip747

+0

그것이 내가 QofQ를 사용하는 이유 중 일부입니다. CFDirectory에서 실제로 원하는 것을 반환하는 UDF에 코드를 래핑 할 수 있습니다. –

0

는 나는 확신합니다! 연산자는 필터 매개 변수에서 작동하지 않습니다.

쿼리를 수행하거나 cfoutput/cfloop을 사용하여 쿼리를 반복 한 다음 cfif/cfcase 문을 사용하여 각 파일 이름의 값을 확인하는 방법이 보이지 않습니다. 나타나다.

6

아니요, cfdirectory 인 파일 만 제외 할 수 없습니다. filter 속성은 포함시킬 파일 만 지정하며 DOS 스타일 와일드 카드 (*?)를 사용합니다.

가장 간단한 해결책은 cfquery를 사용하여 사실을 필터링하는 것입니다.

<cfquery name="qryFiles" dbtype="query"> 
    SELECT * FROM qryFiles 
    WHERE name not like '%.cfm' 
</cfquery> 
1

..와 자바 객체에서이 작업을 수행하는 것이 가능하다이

CreateObject("java", "java.io.File"); 

개인적으로 filename filter

을 .. 그리고, 난 당신이 단지 쿼리를 사용하여 더 나을 것 같아 검색어 수

+0

아마도 cfdirectory가 내부적으로 사용하는 것일 것입니다. 그러나 나는 QoQ가 더 간단한 선택 일 것이라고 동의한다. – Leigh

2

CF 디렉토리를 실행하는 사용자 정의 태그를 작성한 다음 결과와 함께 반복하여 결과 또는 새 구조를 작성할 수 있습니다. 그러면 다른 상황에서는 약간 더 재사용 할 수 있습니다 .

+0

그게 좋은 생각입니다. 필터를 매개 변수로 사용하고 cfdirectory + QoQ를 수행하는 함수입니다. – Jayson

관련 문제