지정 URL에 해당하는 파일이 존재하는지 체크하는 HttpFileExists 함수를 만들어 봤다. 파일이 존재하는 경우 파일의 내용을 모두 가지고 오는 방법은 파일의 용량이 큰 경우 성능에 문제가 된다. 성능향상을 위해서 If-Modified-Since 헤더를 이용, 존재 여부만 파악하는 방법을 썼다.
<%
Option Explicit
If HttpFileExist("http://www.ecplaza.net/images/1pixel.gif") Then
Response.Write "File exists"
Else
Response.Write "File doesn't exist"
End If
Function HttpFileExist(sUrl)
Dim oHttp
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oHttp.Open "GET", sUrl, False
oHttp.setRequestHeader "If-Modified-Since", DateToHTTPDate(DateAdd("h", -1, Now))
oHttp.Send ""
If oHttp.status < 400 Then
HttpFileExist = True
Else
HttpFileExist = False
End If
Set oHttp = Nothing
End Function
''
' Converts date (19991022 11:08:38)
' to http form (Fri, 22 Oct 1999 12:08:38 GMT)
Function DateToHTTPDate(ByVal OleDATE)
Const GMTdiff = #09:00:00#
OleDATE = OleDATE - GMTdiff
DateToHTTPDate = engWeekDayName(OleDATE) & _
", " & Right("0" & Day(OleDATE),2) & " " & engMonthName(OleDATE) & _
" " & Year(OleDATE) & " " & Right("0" & Hour(OleDATE),2) & _
":" & Right("0" & Minute(OleDATE),2) & ":" & Right("0" & Second(OleDATE),2) & " GMT"
End Function
Function engWeekDayName(dt)
Dim Out
Select Case WeekDay(dt,1)
Case 1:Out="Sun"
Case 2:Out="Mon"
Case 3:Out="Tue"
Case 4:Out="Wed"
Case 5:Out="Thu"
Case 6:Out="Fri"
Case 7:Out="Sat"
End Select
engWeekDayName = Out
End Function
Function engMonthName(dt)
Dim Out
Select Case Month(dt)
Case 1:Out="Jan"
Case 2:Out="Feb"
Case 3:Out="Mar"
Case 4:Out="Apr"
Case 5:Out="May"
Case 6:Out="Jun"
Case 7:Out="Jul"
Case 8:Out="Aug"
Case 9:Out="Sep"
Case 10:Out="Oct"
Case 11:Out="Nov"
Case 12:Out="Dec"
End Select
engMonthName = Out
End Function
%>
관련글 : ASP에서 MSXML2.ServerXMLHTTP 사용하여 원격 웹서버 내용 갖고 오기