okej..
pics.inc som är inkluderad i content.asp
<% if request.querystring("p") = "pics" and session("user") = "user" then %>
<title>Administrering av bilder</title>
<form method="post" action="content.asp?p=pics1" name="pics" onsubmit="return form2()">
<span id="header2">» Admin - Lägg till bild</span>
<span id="content2">
<table width="100%" height="100%" cellpadding="0" cellspacing="0">
<td align="left" width="236">
Bildtext:<br>
<input type="text" name="txt"><br>
Bildnamn:<br>
<input type="file" name="pic" style="width:230px;"><hr>
<input type="submit" value="SKICKA"><br>
</form>
</td>
<td align="left" valign="top">
<% sql = "select * from pics order by id desc"
rs.open sql, conn, 1, 2 %>
<% do while not rs.eof %>
<a href="content.asp?p=pics2&id=<%=rs("id")%>" onfocus="this.blur()">Bild <%=rs("id")%></a> - <a href="javascript:del('content.asp?p=pics4&id=<%=rs("id")%>')" onfocus="this.blur()">ta bort</a><br>
<%
rs.movenext
loop
rs.close
%>
</span>
<% end if %>
<% if request.querystring("p") = "pics1" and session("user") = "user" then
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
'Exempel på hur man kan 'plocka ner' andra forumlärelement
'txt = UploadRequest.Item("txt").Item("Value")
contentType = UploadRequest.Item("pic").Item("ContentType")
filepathname = UploadRequest.Item("pic").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("pic").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(filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
<!-- #include = file="upload.asp" -->
add = "select * from pics"
rs.open add, conn, 1, 2
rs.addnew
rs("pic") = filename
rs.update
rs.close
response.redirect "content.asp?p=pics"
end if %>
upload.asp som ligger i samma mapp som inc-filen
<%
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
%>
och jag fick alltså felmeddelandet:
Körningsfel i Microsoft VBScript fel '800a000d'
Inkompatibla typer: 'BuildUploadRequest'
/inc/pics.inc, line 41
och ibland när jag trixat lite får jag detta:
Körningsfel i Microsoft VBScript fel '800a0005'
Ogiltigt proceduranrop eller argument.: 'MidB'
/upload.asp, line 6
tacksam för en lösning av detta.. john n..