erhm, jag hittade felet.. det var så simpelt
som att jag glömt enctype="multipart/form-data".. :P
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..