Dim IW, IH
Const MAXIMAGEWIDTH = 300
Const MAXIMAGEHEIGHT = 300
Function CheckFile()
'// Read File Type
Dim DocType
DocType = UCase(contentType)
Dim blnGIF
Dim blnJPG
blnGIF = (InStr(DocType, "GIF") > 0)
blnJPG = (InStr(DocType, "JPEG") > 0)
CheckFile = 0
If (Not blnGIF) AND (Not blnJPG) Then
CheckFile = 1
Exit Function
End If
'// Bytes 4 and 5 of each GIF Files are Width and Height
If blnGIF Then
IW = CInt(AscW(Mid(fileData, 4, 1)))
IH = CInt(AscW(Mid(fileData, 5, 1)))
If (IW > MAXIMAGEWIDTH) Or (IH > MAXIMAGEHEIGHT) Then CheckFile = 2
Exit Function
End If
'// Retrieving the JPG size is a little complexer
'// We must search file till reach "FF D8 FF"(Hex)
If blnJPG Then
Dim lPos
Const BUFFERSIZE = 65535
lPos = 1
Do
If (bBuf(lPos) = &HFF And bBuf(lPos + 1) = &HD8 _
And bBuf(lPos + 2) = &HFF) _
Or (lPos >= BUFFERSIZE - 10) Then Exit Do
'// Move our pointer up
lPos = lPos + 1
Loop
lPos = lPos + 2
If lPos >= BUFFERSIZE - 10 Then Exit Function
Do
Do
'// Loop until we find the beginning of the next marker
If bBuf(lPos) = &HFF And bBuf(lPos + 1) _
<> &HFF Then Exit Do
lPos = lPos + 1
If lPos >= BUFFERSIZE - 10 Then Exit Function
Loop
'// Move pointer up
lPos = lPos + 1
Select Case bBuf(lPos)
Case &HC0, &HC1, &HC2, &HC3, &HC5, &HC6, &HC7, &HC9, &HCA, &HCB, &HCD, &HCE, &HCF
'// We found the right block
Exit Do
End Select
'// Otherwise keep looking
lPos = lPos + Mult(bBuf(lPos + 2), bBuf(lPos + 1))
'// check for end of buffer
If lPos >= BUFFERSIZE - 10 Then Exit Function
Loop
'// Get the height
IH = Mult(bBuf(lPos + 5), bBuf(lPos + 4))
'// Get the width
IW = Mult(bBuf(lPos + 7), bBuf(lPos + 6))
If (IW > MAXIMAGEWIDTH) Or (IH > MAXIMAGEHEIGHT) Then CheckFile = 2
Exit Function
End If
End Function
Function bBuf(lngPos)
bBuf = (AscB(MidB(fileData, lngPos, 1)))
End Function
Function Mult(lsb, msb)
Mult = lsb + (msb * CLng(256))
End Function