2012-04-19 36 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」はサイトルートからの絶対パスです。

関連する問題