codice:
<%
id = Request.querystring("id")
Class FileUploader
Public Files
Private mcolFormElem
Private imaxSize
Private imaxFileSize
Private bOverWrite
Public fileExt
Public error
Public errorDesc
Private Sub Class_Initialize()
Set Files = Server.CreateObject("Scripting.Dictionary")
Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
bOverWrite = False
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 Property Let maxFileSize(iSize)
imaxFileSize = iSize
End Property
Public Property Get maxFileSize
maxFileSize = imaxFileSize
End Property
Public Property Let maxSize(iSize)
imaxSize = iSize
End Property
Public Property Get maxSize
maxSize = imaxSize
End Property
Public Property Let OverWrite(bValue)
bOverWrite = bValue
End Property
Public Property Get OverWrite
OverWrite = bOverWrite
End Property
Public Default Sub Upload()
Dim biData, sInputName
Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
Dim nPosFile, nPosBound
Dim counter
error = False
errorDesc = ""
'Se la somma delle dimensioni dei file è filtrata
If Not IsNull(imaxSize) AND IsNumeric(imaxSize) AND imaxSize <> "" Then
'Se la somma delle dimensioni dei file è maggiore a quella impostata genera ERRORE
If Request.TotalBytes > imaxSize Then
Error = True
errorDesc = errorDesc & "La somma delle dimensioni dei file è più grande di " & imaxSize & " byte" & "
"
Exit Sub
End If
End If
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)
'contatore dei file
counter = 0
'Cicla i dati contenenti le informazioni dei file
Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
counter = counter + 1
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, sFileName1, sFileExt, dotpos
Set oUploadFile = New UploadedFile
nPosBegin = nPosFile + 10
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
'Se le estensioni sono filtrate
If Not IsNull(fileExt) Then
'Se il campo file del form contiene un file prosegui
If sFileName <> "" Then
'Ricaviamo nome completo, nome senza estensione, estensione
sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
dotpos = 0
dotpos = InStrRev(sFileName1, ".")
oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\")) 'nome completo
oUploadFile.FileExt = Right(sFileName1, Len(sFileName1) - dotpos) 'estensione
oUploadFile.FileNameShort = Left(sFileName1, dotpos-1) 'nome senza estensione
oUploadFile.OverWrite = bOverWrite
sfileExt = oUploadFile.FileExt
'Se l'estensione non è tra quelle ammesse genera ERRORE
If Instr(fileExt, sFileExt) = 0 Then
Error = True
errorDesc = errorDesc & "ATTENZIONE
Il tipo di file caricato non è valido
(devi caricare solo file con estensione ." & fileExt & ")" & "
"
Else
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) AND (oUploadFile.FileSize <= imaxFileSize) Then Files.Add LCase(sInputName), oUploadFile
'Se la dimensione max per il singolo file non è filtrata allora può essere caricato
If Not IsNull(imaxFileSize) AND IsNumeric(imaxFileSize) AND imaxFileSize <> "" Then
'Se il file supera la dimensione max ammessa per il singolo file allora genera ERRORE
If oUploadFile.FileSize > imaxFileSize Then
Error = True
errorDesc = errorDesc & "ATTENTION - The File (" & oUploadFile.FileName & ")have a not ammissed dimension (The max dimension is: " & imaxFileSize & " bytes)
"
'Exit Sub
Else
Files.Add counter-1, oUploadFile
'Files.Add LCase(sInputName), oUploadFile
End If
Else
Files.Add counter-1, oUploadFile
'Files.Add LCase(sInputName), oUploadFile
End If
End If
End If
'Se le estensioni non sono filtrate carica tutti i file
Else
'Se il campo file del form contiene un file prosegui
If sFileName <> "" Then
sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
dotpos = 0
dotpos = InStrRev(sFileName1, ".")
'Se il file ha un estensione qualsiasi può essere caricato
If dotpos > 0 AND dotpos < Len(sFileName1) Then
oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
oUploadFile.FileExt = Right(sFileName1, Len(sFileName1) - dotpos)
oUploadFile.FileNameShort = Left(sFileName1, dotpos-1)
oUploadFile.OverWrite = bOverWrite
sfileExt = Right(sFileName1, Len(sFileName1) - InStrRev(sFileName1, "."))
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)
'Se la dimensione max per il singolo file non è filtrata allora può essere caricato
If Not IsNull(imaxFileSize) AND IsNumeric(imaxFileSize) AND imaxFileSize <> "" Then
'Se il file supera la dimensione max ammessa per il singolo file allora genera ERRORE
If oUploadFile.FileSize > imaxFileSize Then
Error = True
errorDesc = errorDesc & "File #" & counter & "(" & oUploadFile.FileName & "): dimensione file non ammessa (max: " & imaxFileSize & " bytes)
"
'Exit Sub
Else
Files.Add counter-1, oUploadFile
'Files.Add LCase(sInputName), oUploadFile
End If
Else
Files.Add counter-1, oUploadFile
'Files.Add LCase(sInputName), oUploadFile
End If
'Se il file non ha estensione genera ERRORE
Else
Error = True
errorDesc = errorDesc & "File #" & counter & "(" & sFileName1 & "): file senza estensione
"
End If
End If
End If
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 FileNameShort
Public FileExt
Public FileData
Public OverWrite
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)) <> "../../../../../foto/" Then sPath = sPath & "../../../../../foto/"
Set oFS = Server.CreateObject("Scripting.FileSystemObject")
If Not oFS.FolderExists(sPath) Then Exit Sub
ft = "_01"
If Not OverWrite Then
i = 0
Do While oFS.FileExists(sPath & id & ft & "." & FileExt)
i = i + 1
back = CStr(i)
Loop
End If
Set oFile = oFS.CreateTextFile(sPath & id & ft & "." & FileExt, True)
For nIndex = 1 to LenB(FileData)
oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
Next
oFile.Close
Set oFS = Nothing
End Sub
End Class
%>
Puoi aiutarmi?