2014-05-11 7 views
0

하위 폴더 이름을 채워야하는 시스템을 만들고 있는데,이 URL은 참조 URL의 일부가됩니다. 이 하위 폴더는 FTP 소프트웨어를 통해 제공된 폴더 (예 : 뉴스 레터) 아래에 수동으로 업로드됩니다. 서버의 하위 폴더가 생성 될 때마다 해당 하위 폴더의 이름이 페이지에 표시되어 사용자가 선택할 수 있습니다. 그 후 해당 하위 폴더를 가리키는 URL이 추가 사용을 위해 만들어집니다.하위 폴더가 있는지 어떻게 확인할 수 있습니까?

현재 현재 코드 (아래)는 하위 폴더 이름 채우기에 잘 작동합니다. 그러나이 단계 전에 먼저 하위 폴더가 있는지 확인하고 싶습니다. 그렇지 않은 경우 사용자에게 추가 단계로 넘어 가기 전에 먼저 업로드하도록 요청하십시오.

아래 코드로 시도했지만 작동하지 않습니다. 너 좀 도와 줄 수 있니? 고맙습니다.

<% 
Dim objFSO 
dim fo,x 
Set objFSO = Server.CreateObject("Scripting.FileSystemObject") 
set fo=objFSO.GetFolder(Server.MapPath("../newsletterDB")) 

    for each x in fo.SubFolders 
     if fo.SubFolders <> null then 
     Response.write("<input type = ""radio"" name=""group1"" value=" & x.Name & ">" & x.Name & "<br>") 
     else 
     response.write " Please upload any e-Mag first !" 
     end if 
    next 

set fo=nothing 
set objFSO=nothing 
%> 
+0

아니 생각이 무엇인지 당신은 기존 서브 폴더의 컬렉션을 반복하고 있으므로 기존 서브 폴더가 있는지 여부를 확인하는 것은 아무 의미가 없다는 것을 묻습니다. 투표를 종료합니다. –

+0

@ShadowWizard 위에서 언급했듯이이 코드는 어딘가에서 잘못되었으므로 포럼에 질문을 게시해야합니다. 죄송합니다. 제 질문이 당신을 혼란스럽게 만들었습니다. 앞서 언급했듯이 특정 폴더에 하위 폴더가 있는지 여부를 확인하려고합니다. 몇 개가 있다면 그 하위 폴더를 채 웁니다. 그렇지 않다면 사용자에게 먼저 업로드하도록 요청하십시오. – Alxan

+0

폴더에 하위 폴더가 있는지 확인하면 곧 질문을 수정할 것입니다. –

답변

2

하위 폴더를 반복하고 루프에서만 검사를 수행하므로 코드가 실패합니다.

귀하의 경우
'GetSubFolders: gets absolute path of a folder and returns array of its sub folders. 
'In case given path is not a valid existing folder path, empty array is returned. (no error check) 
Function GetSubFolders(strAbsoluteFolderPath) 
    Dim objFSO, objFolder, arrSubFolders() 
    Dim oCurrentSubFolder 
    ReDim arrSubFolders(-1) 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    If objFSO.FolderExists(strAbsoluteFolderPath) Then 
     Set objFolder = objFSO.GetFolder(strAbsoluteFolderPath) 
     For Each oCurrentSubFolder In objFolder.SubFolders 
      ReDim Preserve arrSubFolders(UBound(arrSubFolders) + 1) 
      arrSubFolders(UBound(arrSubFolders)) = oCurrentSubFolder.Name 
     Next 
     Set objFolder = Nothing 
    End If 
    Set objFSO = Nothing 
    GetSubFolders = arrSubFolders 
End Function 

사용법만큼 간단하다 : 여기

내가 주어진 루트 폴더의 하위 폴더 이름의 일반 배열을 반환해야 사용자 정의 함수

Dim arrSubFolders 
arrSubFolders = GetSubFolders(Server.MapPath("../newsletterDB")) 
If UBound(arrSubFolders)>=0 Then 
    Response.write("<input type = ""radio"" name=""group1"" value=""" & arrSubFolders(0) & """>" & arrSubFolders(0) & "<br>") 
Else 
    response.write " Please upload any e-Mag first !" 
End If 
Erase arrSubFolders 
+0

도와 주셔서 감사합니다. 그러나 코드는 작동하지 않습니다. – Alxan

+0

나를 위해 일했습니다. 어떤 오류가 발생합니까? –

+0

@ShadowWizard +1 for 'Erase' 사용하기 : – Lankymart

관련 문제