2012-04-19 4 views
2

이미지가 있는지 루프를 사용하려고 시도하지만 항상 false를 반환합니다.asp fileExists는 항상 false를 반환합니다.

dim fs, sql_except 
set fs=Server.CreateObject("Scripting.FileSystemObject") 
if Not rs.eof then 
    arrRS = rs.GetRows(30,0) 
    set rs = nothing 
    If IsArray(arrRS) Then 
     For i = LBound(arrRS, 2) to UBound(arrRS, 2) 
      sku = arrRS(0, i) 
      if (fs.FileExists("../i/"&sku&".gif")=false) Then 
       response.write sku&"does not exist<br>" 
      end if 
     next 
    end if 
    erase arrRS 
end if 
set fs=nothing 

답변

5

당신은 FileExists에 전화로 부담하는 현재 폴더 컨텍스트는 ASP가 포함 된 실제 폴더가 있다는 인상을 운영 한 것으로 나타났습니다 : 코드 내가 여기 단순하고 멍청하지만 뭔가를하고있는 중이 야 확신이다 스크립트가 실행 중입니다. 그렇지 않으므로 "C : \ windows \ system32 \ inetsrv"가됩니다. 또한 URL 경로 요소 구분 기호 /을 사용합니다. 여기서 FileExists는 Windows 실제 경로 폴더 구분 기호 \을 기다리고 있습니다.

경로를 확인하려면 Server.MapPath을 사용해야합니다. 이 수도 작업 :

상위 경로에 문제에 실행할 수 그러나 ".."
if Not fs.FileExists(Server.MapPath("../i/"&sku&".gif")) then 

,이 보안상의 이유로 허용되지 않을 수 있습니다.

Dim path : path = Server.MapPath("/parentFolder/i") & "\" 
For i = LBound(arrRS, 2) to UBound(arrRS, 2)   
    sku = arrRS(0, i)   
    if Not fs.FileExists(path & sku & ".gif") Then   
     response.write Server.HTMLEncode(sku) & " does not exist<br>"   
    end if   
next  

여기서 "parentFolder"는 사이트 루트의 절대 경로입니다.

관련 문제