webForumDet fria alternativet

aspupload - fungerar, fungerar ikke

ASP

1 svar · 208 visningar · startad av fakenick!

Medlem sedan juli 2002202 inlägg
Frågan#1

hejsan.. har hållit på med ett uploadscript rätt länge nu..
får det att fungera på en sektion.. men när jag gör exakt
likadant på en annan sektion av sidan så blir det:

Körningsfel i Microsoft VBScript fel '800a0005'
Ogiltigt proceduranrop eller argument.: 'MidB'
/uploadresult.asp, line 12

såhär ser den raden ut:

boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

och här är hela koden, som är kopierad från en annan
sektion av sidan, men som fungerar.. den enda skillnaden
är att det inte är samma kolumn i databasen och att
det är några fler "UploadRequest.Item"s..

i setup.inc finns ett "alias" for "db" samt länk till adovbs.inc..

<!-- #include file="setup.inc" -->

<%
set conn = server.createobject("adodb.connection")
set rs = server.createobject("adodb.recordset")
conn.open = "driver={microsoft access driver (*.mdb)};dbq="& db &";pwd="

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

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
date1 = UploadRequest.Item("date1").Item("Value")
date2 = UploadRequest.Item("date2").Item("Value")
what = UploadRequest.Item("what").Item("Value")
where = UploadRequest.Item("where").Item("Value")
contentType = UploadRequest.Item("result").Item("ContentType")
filepathname = UploadRequest.Item("result").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("result").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/doc/" & filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
add = "select * from society"
rs.open add, conn, 1, 2
rs.addnew
rs("date1") = date1
rs("date2") = date2
rs("what") = what
rs("where") = where
rs("result") = filename
rs.update
rs.close
conn.close
set rs = nothing
set conn = nothing
response.redirect "content.asp?p=society" %>

kan ju tillägga att det är overrides komponentlösa
uploadscript jag trixar med.. någon som vet vad det
kan vara för fel?! oerhört tacksam för hjälp! mvh john n..

Medlem sedan juli 2002202 inlägg
#2

erhm, jag hittade felet.. det var så simpelt
som att jag glömt enctype="multipart/form-data".. :P

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)