Problema nome file su upload

drblis

Nuovo Utente
31 Lug 2008
21
0
0
Ciao a tutti aruba mi ha fornito uno script per l'upload di immagini e vorrei modoficarne alcune parti in base alle ie esigenze. Sto facendo una specie di blog dove ogni utente può mettere la sua foto (ma solo una). Qui il mio problema. Vorrei che quando lui sceglie l'immagine dal suo hard disk e la carica quest'ultima acquisti il nome della sua sessione (se si collega l'utente pippo e carica un immagine imm.jpg, quest'ultima finisca sul server col nome pippo.jpg). Il problema che lo script è un po' complicato per me (sono un principiante!) e non riesco a trovare la parte di codice che mi permette tale azione...mi aiutate? vi posto il codice

Codice:
<%
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 = True
	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" & "<br>"
				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 = Session("username")
				
				'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 & "File #" & counter & "(" & oUploadFile.FileName & "): tipo di file non ammesso (solo " & fileExt & ")" & "<br>"
  				  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 & "File #" & counter & "(" & oUploadFile.FileName & "): dimensione file non ammessa (max: " & imaxFileSize & " bytes)<br>"
      				  	'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)<br>"
      				  	'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<br>"
      		  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)) <> "\" Then sPath = sPath & "\"
	
		Set oFS = Server.CreateObject("Scripting.FileSystemObject")
		If Not oFS.FolderExists(sPath) Then Exit Sub
		
		back = ""

		If Not OverWrite Then
		  i = 0
		
		  Do While oFS.FileExists(sPath & FileNameShort & back & "." & FileExt)
		    i = i + 1
		    back = CStr(i)
		  Loop
		End If
		
		Set oFile = oFS.CreateTextFile(sPath & FileNameShort & back & "." & FileExt, True)
		
		For nIndex = 1 to LenB(FileData)
	    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
		Next
		oFile.Close
		
		Set oFS = Nothing
	End Sub
	
	Public Sub SaveToDatabase(ByRef oField)
		If LenB(FileData) = 0 Then Exit Sub
		
		If IsObject(oField) Then
			oField.AppendChunk FileData
		End If
	End Sub

End Class
%>


Vi ringrazio anticipatamente!!!

Ciaoooo
 

drblis

Nuovo Utente
31 Lug 2008
21
0
0
Grazie mille, ma come faccio non sapendo il nome del file uppato?
Codice:
<%
    Dim fso
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    fso.MoveFile([b]"C:\test.html"[/b], "C:\rinominato.html")
    Set fso = Nothing
%>

Gli utenti caricano file dei quali ignoro il nome
 

lukeonweb

Utente Attivo
5 Mar 2003
5.177
10
38
43
Napoli
www.lucaruggiero.it
Lo so che lo ignori ma lo puoi recuperare facendo uno split della stringa che ricevi in input nel type="file":

C:\Documents and Settings\TuoComputer\Documenti\Immagini\NomeFile.jpg

Puoi risalire a "NomeFile.jpg" facendo lo Split della stringa in funzione del carattere "\".

Provo a scrivere un esempio senza testarlo. Nella variabile "stringa" c'è il percorso locale del file uppato, ok?


Dim stringa, arr_str, nome_file_da_rinominare
stringa = Request.Form("stringa")
arr_str = Split(stringa, "\")
nome_file_da_rinominare = arr_str(UBound(arr_str))

Chiaro?

Giocaci un po :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] Problema visualizzazione nome utente loggato su sito ecommerce PHP 23
F problema su query con nome tabella variabile PHP 20
L problema ancoraggio nome HTML e CSS 7
S Problema sul Nome Dominio Domini 3
R Problema query con ricerca id numerico PHP 1
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 0
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0
G Problema update di un database PHP 0
S Problema con spazi bianchi HTML e CSS 4
E Problema motore di ricerca FULL_TEXT PHP 0
Tommy03 Problema durata cookie PHP 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
I PROBLEMA CODICE INSERTION SORT C C/C++ 2
I PROBLEMA CODICE C - INSERTION SORT Presentati al Forum 1

Discussioni simili