webForumDet fria alternativet

Använda Request i upload-script.

5 svar · 231 visningar · startad av joakimweb

joakimwebMedlem sedan feb. 2002141 inlägg
#1

Jag håller på med ett upload-script där man skall kunna ladda upp filer till olika kategorier.

Allt funkar bra, förutom det att formulärobjektet kat skall kunna hämtas från koden, då den innehåller värde för var filen skall placeras på servern.

Jag använder denna koden:
<%kat = Request.Form("kat")%>

Men resten av koden för själva uppladdningsfunktionen generar ett felmeddelande när jag använder Request.Form till annat än själva filen. Om jag använder enbart Request("kat") så blir värdet ingenting.

Hur gör man för att kunna hämta ett Request.Form även med Request.BinaryRead?

Hoppas nån kan/vill hjälpa mig =)

solbulleMedlem sedan mars 20015 287 inlägg
joakimwebMedlem sedan feb. 2002141 inlägg
#3

Mitt upload-script är inte uppbyggt på det sättet riktigt...
Har redan testat med .Item grejen, då fick jag felmess...

Det jag håller på med är ungefär som det som finns att ladda ner i detta forum.

solbulleMedlem sedan mars 20015 287 inlägg
#4

Kanske kan vara läge att visa lite kod då.

Mika3lMedlem sedan nov. 20018 492 inlägg
#5

Testa med Upload.Form.

/Mika3l

joakimwebMedlem sedan feb. 2002141 inlägg
#6
' Uppladdningskoden
If Request("do") = "laddaupp" Then

' funktionen som används för uppladdning av filer
Function get_upload_files()

Dim	upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos

Set upload_object	= Server.CreateObject("Scripting.Dictionary")
request_binaries	= Request.BinaryRead(Request.TotalBytes)
position_start		= 1
position_end		= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary			= MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos		= InstrB(1, request_binaries, boundary)

Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))

' Om du stäng ner webbläsaren, då avslutas uppladdningen
If Not(Response.IsClientConnected) Then Response.End

Dim name, pos_file, value

position_start	= (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))

name			= get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file		= InstrB(boundary_pos, request_binaries, get_byte_string("filename="))

If  ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")

position_start	= (pos_file + 10)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

position_start	= (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

position_start	= (position_end + 4)
position_end	= InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos	= InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop

Set get_upload_files = upload_object
End Function

Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string	= get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function

Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string	= get_string & chr(AscB(MidB(str, cnt, 1))) 
Next
End Function

Function extract_filename(filename)
extract_filename	= Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function

Response.Expires = 0
Response.Buffer = TRUE
Response.Clear

kat = Request.Form("kat")

Det är dom viktigaste delarna av koden, den sista raden är det som jag har problem med.

123 ms totalt · 3 externa anrop · v20260731065814-full.35aaef89
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)