Carissimi,
ho questo script con il nome file class_upload.asp:
codice:
<%
server.scriptTimeOut = 3600 

Last_Name1 = Request.querystring("Last_Name")
id = Request.querystring("codex")


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 & "ATTENTION
This type file can not be ammissed
(it must load only files ." & 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)) <> "../../../oral/" Then sPath = sPath & "../../oral/"
	
		Set oFS = Server.CreateObject("Scripting.FileSystemObject")
		If Not oFS.FolderExists(sPath) Then Exit Sub

FileNameShort = Last_Name1
back = "-01_"			

		If Not OverWrite Then
		  i = 0
		
		  Do While oFS.FileExists(sPath & FileNameShort & back & id & "." & FileExt)
		    i = i + 1
		    back = CStr(i)
		  Loop
		End If

		Set oFile = oFS.CreateTextFile(sPath & FileNameShort & back & id & "." & 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
%>
Questo script carica un file e poi lo rinomina, però se nel nome orginale del file che carica è presente una parola, numero etc che creerà lo script rinominandolo esempio:

Nome orginale: prova.doc
Nome che creerà: prova_01-10.doc

esce questo errore:
Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument

/script/class_upload.asp, line 294
Però il file lo carica correttamente, ma per evitare il rinomino manuale come posso ovviare al problema?
Grazie
G.