Avatar billede dogg Nybegynder
27. november 2003 - 16:54 Der er 1 kommentar

Udvidelse af upload-script

Hej derude!

Har mit upload-script heruder. Det virker perfekt!!! Nu vil jeg bare gerne udvide det, så man kun kan uploade filer med en maxstørrelse på 100kb (og gerne også så det kun kan være billed-filer). Her går jeg så i stå..... Er der nogen der kan hjælpe mig med at lave de tilføjelser??!

På forhånd MANGE TAK!!! :P

Niels

Her er mit uploadscript:

<%
response.buffer = true
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
key = request.querystring("key")
send_til_url = request.querystring("send_til_url")

If key = 1 then
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER=mysql; SERVER=server; DATABASE=db; UID=uid; PWD=password"
set rs = Conn.Execute("Select max(nummer) as max_nummer from billeder")
count = rs("max_nummer") +1
rs.Close
Set rs = Nothing
Conn.Execute("Update billeder set nummer = nummer + 1")
conn.Close
Set conn = Nothing
response.Clear
tmp=filename
extention = Right(tmp,Len(tmp) - Instr(tmp,"."))
If lcase(extension) = "gif" or lcase(extension) = "jpg" or lcase(extension) = "png" or lcase(extension) = "jpeg" Then
filename="photo" & count & "." & extention
Session("src") = filename
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("fileupload/"&filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close   
Sub BuildUploadRequest(RequestBin)
  PosBeg = 1
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
  boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
  boundaryPos = InstrB(1,RequestBin,boundary)
  Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
  Dim UploadControl
  Set UploadControl = CreateObject("Scripting.Dictionary")
  Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
  Pos = InstrB(Pos,RequestBin,getByteString("name="))
  PosBeg = Pos+6
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
  Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
  PosBound = InstrB(PosEnd,RequestBin,boundary)
    If  PosFile<>0 AND (PosFile<PosBound) Then
    PosBeg = PosFile + 10
    PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
    FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "FileName", FileName
    Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
    PosBeg = Pos+14
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "ContentType",ContentType
    PosBeg = PosEnd+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    Else
    Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
    PosBeg = Pos+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    End If
    UploadControl.Add "Value" , Value   
    UploadRequest.Add name, UploadControl   
    BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
  Loop
  End Sub
  Function getByteString(StringStr)
  For i = 1 to Len(StringStr)
    char = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(char))
  Next
  End Function
  Function getString(StringBin)
  getString =""
  For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
  Next
  End Function
  Response.Redirect("" & send_til_url & "")

Else

Response.Redirect("default.asp")

End If

Else

Response.Redirect("default.asp")

End If
%>

<HTML>
<HEAD>
</HEAD>
<BODY>
<form METHOD='Post' ENCTYPE='multipart/form-data' ACTION='upload.asp?key=1&send_til_url=upload.asp?ok=hehe' id='form3' name='form3'>
<input TYPE="file" NAME="blob" class="input">
<input type='submit' name='Action' value='UPLOAD'>
</form>
</body>
</html>
Avatar billede dogg Nybegynder
27. november 2003 - 16:56 #1
skal lige siges, der er lavet i forsøg på at begrænse extension, men det virker ikke :( (se koden)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester