Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630

    errore upload se esistente parola

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Nessun aiuto??
    Grazie
    G.

  3. #3
    Microsoft VBScript runtime error '800a0005'
    Invalid procedure call or argument
    /script/class_upload.asp, line 294

    aiutaci evidenziando la riga nella mischia

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Eccola,
    grazie optime:
    codice:
    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
    Grazie ancora.
    G.

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    si però al quel tread avevo il dubbio fosse un trattino o altro inserito nel nome originale, ma comunque non ho avuto un'aiuto concreto perchè quello non è l'errore.
    Puoi aiutarmi tuo optime?
    Grazie
    G.

  7. #7
    metti

    Response.Write "maGGico file...: " & FileData
    Response.Flush


    prima di


    For nIndex = 1 to LenB(FileData)
    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
    Next


    e posta quello che viene a video

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.