webForumDet fria alternativet

Använda Request i upload-script.

ASP

5 svar · 231 visningar · startad av joakimweb

Medlem sedan feb. 2002141 inlägg
Frågan#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 =)

Medlem sedan mars 20015 287 inlägg
Medlem 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.

Medlem sedan mars 20015 287 inlägg
#4

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

Medlem sedan nov. 20018 492 inlägg
#5

Testa med Upload.Form.

/Mika3l

Medlem 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.

288 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
145 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
145 ms — ändringar (db)