webForumDet fria alternativet

Uploadscript utan komponent

ASPur ASP

307 svar · 16 560 visningar · startad av OveRRidE · sida 10 av 16

Frågan, av OveRRidE

Jag har (äntligen?) lagt till ett uploadscript här eftersom jag inte fått ändan ur vagnen att göra det innan. Scriptet är helt komponentlöst, vilket jag tror ganska många har användning av ibland om det inte finns ordentliga komponenter installerade på servern. (Vilket det visserligen oftast finns ;)) Buggar eller problem rapporteras i de

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#181

http://www.itgymnasiet-k.net/it6/koffedesign/vvk2/uploadkomponentlos/upload/5.jpg

Lade du den inte i uploadmappen? :)

Mvh

Medlem sedan maj 2003352 inlägg
#182

Jojo, det funkar nu.

Men vad menas med sökvägen?

Medlem sedan maj 2003352 inlägg
#183

"Filens sökväg: d:\domains\itgymnasiet-k.net\www\it6\koffedesign\vvk2\uploadkomponentlos\absolut86.jpg"

Medlem sedan juni 200032 967 inlägg
#184

Sökvägen på serverns hårddisk. Det saknas dock upload\ i den sökvägen för att den ska vara korrekt.

Medlem sedan maj 2003352 inlägg
#185

Jo, men det funkar ju iaf :)

Tack för all "hjälp" :D

Medlem sedan juni 200032 967 inlägg
#186

Vassegoo!

Medlem sedan juli 20033 147 inlägg
#187

Borde det inte funka o lägga till den här raden innan filen uploadas...

If FSO.FileExists("/Creative/warcraft/replays/" & filename) then

Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"

Else

den funkar iaf inte, får felmeddelandet:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'FSO'

Medlem sedan juni 200032 967 inlägg
#188

Antingen så har du då inte skapat objektet FSO, eller så har du förstört det tidigare i koden.

Mvh

Medlem sedan juli 20033 147 inlägg
#189

Hm, vet inte riktigt själv, så här ser koden ut:

<!-- #include file="../../data.inc" -->
<%

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

username =  UploadRequest.Item("username").Item("Value")
info =  UploadRequest.Item("info").Item("Value")
player1 =  UploadRequest.Item("player1").Item("Value")
player2 = UploadRequest.Item("player2").Item("Value")
player1race = UploadRequest.Item("player1race").Item("Value")
player2race = UploadRequest.Item("player2race").Item("Value")
map = UploadRequest.Item("map").Item("Value")

contentType = UploadRequest.Item("filename").Item("ContentType")
filepathname = UploadRequest.Item("filename").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("filename").Item("Value")

'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
' Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/Creative/warcraft/replays/" & filename))

For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={MySQL ODBC 3.51 Driver};server="&strserver&";uid="&struser&";pwd="&strpass&";database="&strdb&"" 

	sql = "insert into wc3_replay (filename, username, info, player1, player2, player1race, player2race, map, datum) values ('" & filename & "', '" & username & "', '" & info & "','" & player1 & "','" & player2 & "', '" & player1race & "','" & player2race & "','" & map & "','" & datum & "')"
	Connect.Execute(sql),,128

	Connect.Close : Set objConnect = Nothing

MyFile.Close

[b]If FSO.FileExists("/Creative/warcraft/replays/" & filename) then

Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"

Else[/b]

Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
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)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
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
'Add content to dictionary object
UploadControl.Add "Value" , Value 
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl 
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next
End Function
[b]End If[/b]
Response.Redirect "../admin.asp?login=yes&add=replay"
%>
Medlem sedan juni 200032 967 inlägg
#190
Set [b]ScriptObject[/b] = Server.CreateObject("Scripting.FileSystemObject")
Medlem sedan juli 20033 147 inlägg
#191

Jag har redan skapat det ju? :/

<!-- #include file="../../data.inc" -->
<%

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

username =  UploadRequest.Item("username").Item("Value")
info =  UploadRequest.Item("info").Item("Value")
player1 =  UploadRequest.Item("player1").Item("Value")
player2 = UploadRequest.Item("player2").Item("Value")
player1race = UploadRequest.Item("player1race").Item("Value")
player2race = UploadRequest.Item("player2race").Item("Value")
map = UploadRequest.Item("map").Item("Value")

contentType = UploadRequest.Item("filename").Item("ContentType")
filepathname = UploadRequest.Item("filename").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("filename").Item("Value")

'Create FileSytemObject Component
[b]Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")[/b]

'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
' Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/Creative/warcraft/replays/" & filename))

For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={MySQL ODBC 3.51 Driver};server="&strserver&";uid="&struser&";pwd="&strpass&";database="&strdb&"" 

	sql = "insert into wc3_replay (filename, username, info, player1, player2, player1race, player2race, map, datum) values ('" & filename & "', '" & username & "', '" & info & "','" & player1 & "','" & player2 & "', '" & player1race & "','" & player2race & "','" & map & "','" & datum & "')"
	Connect.Execute(sql),,128

	Connect.Close : Set objConnect = Nothing

MyFile.Close

[b]If FSO.FileExists("/Creative/warcraft/replays/" & filename) then

Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"

Else[/b]

Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
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)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
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
'Add content to dictionary object
UploadControl.Add "Value" , Value 
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl 
'Loop to next object
 BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,bou
ndary)
Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next
End Function
[b]End If[/b]
Response.Redirect "../admin.asp?login=yes&add=replay"
%>

eller?

Medlem sedan juni 200032 967 inlägg
#192

Ja, ScriptObject. Det är ju bara det att det är ju inte Scriptobject du försöker använda.

Medlem sedan juli 20033 147 inlägg
#193

Ursäkta min "dumhet" men vad är det jag ska använda isåfall? :OO

Medlem sedan juni 200032 967 inlägg
#194

Eftersom ditt filsystemsobjekt inte heter FSO, utan Scriptobject, så byt FSO i koden mot Scriptobject.

Medlem sedan maj 2003352 inlägg
#195

Vet någon vad det här kan betyda??

Request object error 'ASP 0208 : 80004005'

Cannot use generic Request collection

/it6/koffedesign/vvk2/admin/skicka_n.asp, line 74

Cannot use the generic Request collection after calling BinaryRead.

Medlem sedan juli 20033 147 inlägg
#196

Okej, tack :)

Medlem sedan juli 20033 147 inlägg
#197

HM! Koden funkar inte som den ska, den gör allting efter Else ändå!

Någon som har en aning om varför den inte funkar?

If ScriptObject.FileExists("/Creative/warcraft/replays/" & filename) then

Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"

Else
Medlem sedan mars 20015 287 inlägg
#198

k0ffe: Du försöker antagligen använda dig av request.form eller likandne, du ska använda

typ:

info = UploadRequest.Item("info").Item("Value")

Btw, vad menade du egentligen när du skrev:

k0ffe skrev:

Tack för all "hjälp" :D

Såg snudd på lite sarkastiskt ut.

Medlem sedan mars 20015 287 inlägg
#199
If ScriptObject.FileExists(server.mappath(("/Creative/warcraft/replays/" & filename)) then

Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"

Else
Medlem sedan juli 20033 147 inlägg
#200

Man tackar o bugar :birp

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