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?