13. november 2001 - 19:48
#1
OUTPUTFILE>>>>>>>>>>>>>>>>
<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject(\"Scripting.Dictionary\")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item(\"blob\").Item(\"ContentType\")
filepathname = UploadRequest.Item(\"blob\").Item(\"FileName\")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,\"\\\"))
value = UploadRequest.Item(\"blob\").Item(\"Value\")
Set ScriptObject = Server.CreateObject(\"Scripting.FileSystemObject\")
\'pathEnd = Len(Server.mappath(Request.ServerVariables(\"PATH_INFO\")))-14
\'Response.Write (Request.ServerVariables(\"PATH_INFO\"))
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\"-->
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
upload>>>>>>>>>>>>>>>>>>>>>>>><<
<%
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
%>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<form METHOD=\"Post\" ENCTYPE=\"multipart/form-data\" ACTION=\"outputFile.asp\" id=\"form3\" name=\"form3\">
<input TYPE=\"file\" NAME=\"blob\"><br>
<input TYPE=\"submit\" value=\"Upload billede\" NAME=\"Enter\">
>>>>>>>>>>>>>>>>>>>>>>>>>><<
her, da!
Upload via asp uden komponenter.
Filer:
uploadfile.asp filen der skal præsenteres for brugerne
består af en inputbox og noget gennemse.
upload.asp og outputfile.asp - selve motoren bag showet.. lad være med at pille :)