Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Errore Nome File

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630

    Errore Nome File

    Carissimi,
    ho un problema, ho uno script che deve effettua l'upload dei file rinominandoli e fin qui lo script va tutto bene, ma se si fà l'upload di file il cui nome originale contenga numeri o _ penso anche altri segni (ancora non l'ho capito precisamente) nell'elaborazione dell'upload mi dà il seguente errore:

    codice:
    Microsoft VBScript runtime error '800a0005' 
    
    Invalid procedure call or argument 
    
    /percorso/class_upload.asp, line 294
    La linea incriminata è:
    codice:
    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
    Come posso ovviare al problema.
    Grazie per l'aiuto che potrete darmi.
    G.

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    modifica leggermente il tuo codice così

    dim temp
    temp=Chr(AscB(MidB(FileData,nIndex,1)))
    response.write ("MaGGico file:" & temp)
    response.end

    e dicci cosa viene scritto
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Grazie per la tua risposta ecco a video cosa mi esce modificando lo script come da tuo consiglio:
    codice:
    MaGGico file:-
    Così sembrerebbe che il - sia il problema ma il nome originale del file è:

    Prova2_sicurezza.doc

    Non ci sono trattini centrali, mentre al nome che crea si:

    PROVA-02_01.doc

    Ma voglio farti notare che solo con questo file c'è il problema infatti se lo rinomino così:
    Provasicurezza.doc, quindi togliendo il 2_ lo script lo elabora correttamente, quindi il problema è al nome del file originale non quello creato che con altri file crea correttamente il nome sempre inserendo -02_
    Attendo tue conclusioni.
    Grazie
    G.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    potete aiutarmi?

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Un po' poco per fare congetture... posta tutta la porzione dove viene trattato il nome del file e che contiene l'istruzione gia' postata.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Grazie BR1,
    ecco tutto lo script ORIGINALE senza la modifica di WALLRIDER che elabora l'upload e il successivo cambio del nome:
    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 = "-02_"			
    
    		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
    %>
    Fin'ora ha sempre funzionato ma uplodando file con simboli come _o - da l'errore.
    Grazie per l'aiuto.
    G.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Nessuno può aiutarmi?
    Grazie
    G.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Stò letteralmente impazzendo a capire il problema.
    C'è qualche anima pia?
    Grazie
    G.

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    si direbbe che il sistema aggiunga quella parte se trova gia' esistente un file con il nome uguale... ma ho fatto un esame abbastanza superficiale
    codice:
    FileNameShort = Last_Name1
    back = "-02_"			
    
    		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)
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Grazie br1,
    ma quella parte è relativa alla rinominazione del file caricato.
    Ciao
    Gino

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.