On Wed, 14 Mar 2001 15:37:51 +0000 (UTC), usenet@stocholm.dk (Jesper
Stocholm) wrote:
>Er der nogen, der kan forklare mig lidt om hvad man skal/kan bruge
>dictionary-objectet til ?
>
>Forklaringen på msdn er ikke vildt fyldestgørende.
>
>
Jeg benytter nedenstående til at uploade binære filer med, så det kan
man vidst godt svare ja til?:
FileUploader ASP Library (beta 1.2)
********************************************************
Author: Jacob "Bèézle" Gilley
Co-author: Philippe Collignon (I'm assuming)
Email: avis7@airmail.net
Purpose: To provide a free and easy way to perform file
uploading across the web via Active Server Pages.
********************************************************
NOTE - YOU MUST HAVE VBSCRIPT v5.0 INSTALLED ON YOUR WEB SERVER
FOR THIS LIBRARY TO FUNCTION CORRECTLY. YOU CAN OBTAIN IT
FREE FROM MICROSOFT WHEN YOU INSTALL INTERNET EXPLORER 5.0
OR LATER.
Object Overview
---------------
========================================================
FileUploader Object
========================================================
METHODS
---------
Upload() - Begins the file upload process. MUST BE CALLED FIRST!
PROPERTIES
------------
Files - A Collection of UploadedFile objects. (see below)
Form - A Collection of posted form elements.
========================================================
========================================================
UploadedFile Object
========================================================
METHODS
---------
SaveToDisk(Path) - Accepts a fully qualified physical path
to save the uploaded file to.
SaveToDatabase(Field) - Accepts an ADODB.Field object to save
the uploaded file to. The ADODB.Recordset
must be opened by you and the database must
support Binary Large Objects (BLOBS).
PROPERTIES
------------
FileName - The name of the file uploaded. (Does not include path
information)
FileSize - The size, in bytes, of the file uploaded.
FileData - The raw binary file data.
ContentType - The application association string that binds a
particular file
extention to an application. (e.g. "image/gif")
========================================================
<%
'***************************************
' File: Upload.asp
' Author: Jacob "Beezle" Gilley
' Email: avis7@airmail.net
' Date: 12/07/2000
' Comments: The code for the Upload, CByteString,
' CWideString subroutines was originally
' written by Philippe Collignon...or so
' he claims. Also, I am not responsible
' for any ill effects this script may
' cause and provide this script "AS IS".
' Enjoy!
'****************************************
Class FileUploader
Public Files
Private mcolFormElem
Private Sub Class_Initialize()
Set Files = Server.CreateObject("Scripting.Dictionary")
Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
If IsObject(Files) Then
Files.RemoveAll()
Set Files = Nothing
End If
If IsObject(mcolFormElem) Then
mcolFormElem.RemoveAll()
Set mcolFormElem = Nothing
End If
End Sub
Public Property Get Form(sIndex)
Form = ""
If mcolFormElem.Exists(LCase(sIndex)) Then Form =
mcolFormElem.Item(LCase(sIndex))
End Property
Public Default Sub Upload()
Dim biData, sInputName
Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
Dim nPosFile, nPosBound
biData = Request.BinaryRead(Request.TotalBytes)
nPosBegin = 1
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
nDataBoundPos = InstrB(1, biData, vDataBounds)
Do Until nDataBoundPos = InstrB(biData, vDataBounds &
CByteString("--"))
nPos = InstrB(nDataBoundPos, biData,
CByteString("Content-Disposition"))
nPos = InstrB(nPos, biData, CByteString("name="))
nPosBegin = nPos + 6
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sInputName = CWideString(MidB(biData, nPosBegin,
nPosEnd-nPosBegin))
nPosFile = InstrB(nDataBoundPos, biData,
CByteString("filename="))
nPosBound = InstrB(nPosEnd, biData, vDataBounds)
If nPosFile <> 0 And nPosFile < nPosBound Then
Dim oUploadFile, sFileName
Set oUploadFile = New UploadedFile
nPosBegin = nPosFile + 10
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sFileName = CWideString(MidB(biData, nPosBegin,
nPosEnd-nPosBegin))
oUploadFile.FileName = Right(sFileName,
Len(sFileName)-InStrRev(sFileName, "\"))
nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
nPosBegin = nPos + 14
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin,
nPosEnd-nPosBegin))
nPosBegin = nPosEnd+4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
oUploadFile.FileData = MidB(biData, nPosBegin,
nPosEnd-nPosBegin)
If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName),
oUploadFile
Else
nPos = InstrB(nPos, biData, CByteString(Chr(13)))
nPosBegin = nPos + 4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
If Not mcolFormElem.Exists(LCase(sInputName)) Then
mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData,
nPosBegin, nPosEnd-nPosBegin))
End If
nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds),
biData, vDataBounds)
Loop
End Sub
'String to byte string conversion
Private Function CByteString(sString)
Dim nIndex
For nIndex = 1 to Len(sString)
CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
Next
End Function
'Byte string to string conversion
Private Function CWideString(bsString)
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
Next
End Function
End Class
Class UploadedFile
Public ContentType
Public FileName
Public FileData
Public Property Get FileSize()
FileSize = LenB(FileData)
End Property
Public Sub SaveToDisk(sPath)
Dim oFS, oFile
Dim nIndex
If sPath = "" Or FileName = "" Then Exit Sub
If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
Set oFS = Server.CreateObject("Scripting.FileSystemObject")
If Not oFS.FolderExists(sPath) Then Exit Sub
Set oFile = oFS.CreateTextFile(sPath & FileName, True)
For nIndex = 1 to LenB(FileData)
oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
Next
oFile.Close
End Sub
Public Sub SaveToDatabase(ByRef oField)
If LenB(FileData) = 0 Then Exit Sub
If IsObject(oField) Then
oField.AppendChunk FileData
End If
End Sub
End Class
%>
Med venlig hilsen
Bjørn Rønn Ginsborg
Telefon / Fax: 54457667
E-Mail adr.:
Ginsborg@Get2Net.DK