Just nu i M3-nätverket
Gå till innehåll

Upload utan komponent


-OZn-

Rekommendera Poster

Tjena

Jag har hittat ett upload script http://www.4guysfromrolla.com

som jag tänkte dela med mig.

Det kräver ingen komponent utan är ren asp

och det finns funtioner för bild storlek etc etc.

Samtidigt skulle jag vilja ha lite hjälp.

Kan säga att jag är helt borta när det gäller object hantering....

Som ni ser så är det ett test längre ner på sidan, när man kör scriptet så radar den upp alla gif bilder under c:\ och skriver ut höjd, bredd, namn, color depht.

 

Problemet:

Jag behöver använda alla dessa värden när jag ska validera en bild som laddas upp till min sida men jag vet inte hur jag ska gå till väga.

Jag har skapat checkimage.asp (all kod här neranför, utom testbiten lägst ner) och ett formulär (uploadform.asp) sen postar jag bilden vidare till checkimage.asp, där har jag inkluderat checkimage sen är det stopp :(

Hur ska jag kolla alla värden av bilden?

med hjälp av gfxSpex(strFlnm, lngWidth, lngHeight, lngDepth, strImageType)???

Tack för all hjälp!

 

 

<%

 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

'::: :::

'::: This function gets a specified number of bytes from any :::

'::: file, starting at the offset (base 1) :::

'::: :::

'::: Passed: :::

'::: flnm => Filespec of file to read :::

'::: offset => Offset at which to start reading :::

'::: bytes => How many bytes to read :::

'::: :::

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function GetBytes(flnm, offset, bytes)

 

Dim objFSO

Dim objFTemp

Dim objTextStream

Dim lngSize

 

on error resume next

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

 

' First, we get the filesize

Set objFTemp = objFSO.GetFile(flnm)

lngSize = objFTemp.Size

set objFTemp = nothing

 

fsoForReading = 1

Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)

 

if offset > 0 then

strBuff = objTextStream.Read(offset - 1)

end if

 

if bytes = -1 then ' Get All!

 

GetBytes = objTextStream.Read(lngSize) 'ReadAll

 

else

 

GetBytes = objTextStream.Read(bytes)

 

end if

 

objTextStream.Close

set objTextStream = nothing

set objFSO = nothing

 

end function

 

 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

'::: :::

'::: Functions to convert two bytes to a numeric value (long) :::

'::: (both little-endian and big-endian) :::

'::: :::

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function lngConvert(strTemp)

lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))

end function

 

function lngConvert2(strTemp)

lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))

end function

 

 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

'::: :::

'::: This function does most of the real work. It will attempt :::

'::: to read any file, regardless of the extension, and will :::

'::: identify if it is a graphical image. :::

'::: :::

'::: Passed: :::

'::: flnm => Filespec of file to read :::

'::: width => width of image :::

'::: height => height of image :::

'::: depth => color depth (in number of colors) :::

'::: strImageType=> type of image (e.g. GIF, BMP, etc.) :::

'::: :::

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function gfxSpex(flnm, width, height, depth, strImageType)

 

dim strPNG

dim strGIF

dim strBMP

dim strType

strType = ""

strImageType = "(unknown)"

 

gfxSpex = False

 

strPNG = chr(137) &amp; chr(80) &amp; chr(78)

strGIF = "GIF"

strBMP = chr(66) &amp; chr(77)

 

strType = GetBytes(flnm, 0, 3)

 

if strType = strGIF then ' is GIF

 

strImageType = "GIF"

Width = lngConvert(GetBytes(flnm, 7, 2))

Height = lngConvert(GetBytes(flnm, 9, 2))

Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)

gfxSpex = True

 

elseif left(strType, 2) = strBMP then ' is BMP

 

strImageType = "BMP"

Width = lngConvert(GetBytes(flnm, 19, 2))

Height = lngConvert(GetBytes(flnm, 23, 2))

Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))

gfxSpex = True

 

elseif strType = strPNG then ' Is PNG

 

strImageType = "PNG"

Width = lngConvert2(GetBytes(flnm, 19, 2))

Height = lngConvert2(GetBytes(flnm, 23, 2))

Depth = getBytes(flnm, 25, 2)

 

select case asc(right(Depth,1))

case 0

Depth = 2 ^ (asc(left(Depth, 1)))

gfxSpex = True

case 2

Depth = 2 ^ (asc(left(Depth, 1)) * 3)

gfxSpex = True

case 3

Depth = 2 ^ (asc(left(Depth, 1))) '8

gfxSpex = True

case 4

Depth = 2 ^ (asc(left(Depth, 1)) * 2)

gfxSpex = True

case 6

Depth = 2 ^ (asc(left(Depth, 1)) * 4)

gfxSpex = True

case else

Depth = -1

end select

 

 

else

 

strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file

lngSize = len(strBuff)

flgFound = 0

 

strTarget = chr(255) &amp; chr(216) &amp; chr(255)

flgFound = instr(strBuff, strTarget)

 

if flgFound = 0 then

exit function

end if

 

strImageType = "JPG"

lngPos = flgFound + 2

ExitLoop = false

 

do while ExitLoop = False and lngPos < lngSize

 

do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize

lngPos = lngPos + 1

loop

 

if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then

lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))

lngPos = lngPos + lngMarkerSize + 1

else

ExitLoop = True

end if

 

loop

'

if ExitLoop = False then

 

Width = -1

Height = -1

Depth = -1

 

else

 

Height = lngConvert2(mid(strBuff, lngPos + 4, 2))

Width = lngConvert2(mid(strBuff, lngPos + 6, 2))

Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)

gfxSpex = True

 

end if

 

end if

 

end function

 

 

 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

'::: Test Harness :::

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

To test, we'll just try to show all files with a .GIF extension in the root of C:

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objF = objFSO.GetFolder("c:\")

Set objFC = objF.Files

 

response.write "<table border=""0"" cellpadding=""5"">"

 

For Each f1 in objFC

if instr(ucase(f1.Name), ".GIF") then

response.write "<tr><td>" &amp; f1.name &amp; "</td><td>" &amp; f1.DateCreated &amp; "</td><td>" &amp; f1.Size &amp; "</td><td>"

 

if gfxSpex(f1.Path, w, h, c, strType) = true then

response.write w &amp; " x " &amp; h &amp; " " &amp; c &amp; " colors"

else

response.write "&amp;nbsp;"

end if

response.write "</td></tr>"

 

end if

 

Next

 

response.write "</table>"

 

set objFC = nothing

set objF = nothing

set objFSO = nothing

 

 

%>

 

 

[inlägget ändrat 2002-10-09 23:17:50 av Seeflash]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...