Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Upload con lo stesso nome

    Salve a tutti, ho uno script che mi permette di fare l’upload di un file su server, ma se sul server è presente ad es. un file di nome uno.txt e faccio l’upload su server di un file con lo stesso nome, questo non mi chiede nulla, e lo sostituisce automaticamente. Per evitare ciò potrei mettere una procedura che controlla tutti i file presenti nella cartella del server per l’upload, e se il nome corrisponda mi restituisce un messaggio dicendo di rinominare il file, ma mi sembrerebbe poco professionale, qualcuno potrebbe farmi la cortesia di indirizzarmi meglio sull’argomento?

    Grazie, ciao.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Dipende dallo script di upload che usi.
    Alcuni ti offrono la possibilità di procedere automaticamente a rinominare il file oppure per far prima rinomina tu stesso in modo che non possano esserci file con lo stesso nome.

    Roby

  3. #3
    oppure per far prima rinomina tu stesso in modo che non possano esserci file con lo stesso nome.
    eh,eh, ma guarda un pò non ci avevo pensato

    Io a dire la verità mi sono scopiazzato uno script che ho trovato ed è l'unico che funziona, visto che quando ho usato altri script non mi sono mai funzionati.

    <%
    'upload file

    percorso = "/server/cartella/"

    ByteRicevuti = Request.TotalBytes
    file = Request.QueryString("file")

    if ByteRicevuti > 0 then
    DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    For i = 1 To lenB(DatiRicevuti)
    FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    Next
    FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    ArrPezzi = split(FileBinario,FirmaFile)

    for item = 1 to ubound(ArrPezzi)-1
    Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    Intestazione = left(ArrPezzi(item),Inizio-1)
    Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    if instr(Intestazione,"file") > 0 then
    i = instr(Intestazione,"filename=")
    j = instr(i + 10,Intestazione,chr(34))
    NomeUpload = mid(Intestazione,i + 10,j-i-10)
    i = instrRev(NomeUpload,"\")
    if i<>0 then
    NomeFile = mid(NomeUpload,i + 1)
    else
    NomeFile = NomeUpload
    end if

    ' Qui potrei mettere uno script che ricerca tutti i files della cartella relativa al percorso, lo confronta con il file da uploadare e fa uscire una finestra di avviso dicendo di cambiare nome


    if i<>0 then
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Upload1 = True
    DimensioneFile1 = len(ContenutoFile)
    EstensioneFile1 = right(ContenutoFile,3)
    NomeFile1 = NomeFile
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    Set FSO = Nothing
    end if
    end if
    next
    end if
    If Upload1 = true then
    Response.Write "
    La dimensione del file che hai uploadato è di " & DimensioneFile1*0.001 & "kb"
    Response.Write "
    Grazie di aver inviato il tuo file
    "
    response.Write "path " & server.MapPath(percorso & NomeFile1)
    End If
    %>

    Il procedimento penso che potrebbe andare bene, ma quello che non riesco a capire è come potrei fare per fare uscire una finestra di dialogo che ti permetta di rinominare il file direttamente, anzi a questo punto vorrei sapere se è possibile o perlomeno uno che ha una conoscenza minima di asp come me potrebbe farlo?
    Grazie, ciao

  4. #4
    Scusami se insisto Roby, ma ho "elaborato" lo script precedente, questo mi permette di gestire il nome del file: il problema che a volte funziona a volte mi passa l'immagine anche se esiste sul server, e a volte mi da un errore alla riga 141, dicendomi che è impossibile trovare l'oggetto.
    Potreste darci un'occhiata e vedere quello che non va???

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>controlloVetrina</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="javascript1.2" type="text/javascript">
    function foto(vai){
    if (window.confirm("E' già presente un file con lo stesso nome sostituire? \n ATTENZIONE: sostituendo il file tutte le foto con lo stesso nome verranno sostituite.")){
    	return true;
    	}
    	else{
    		history.back();
    	}
    	
    }
    	
    </script>
    
    </head>
    
    <body >
    
          <%
    if session("login") then
    
    'Questa variabile setta il percorso di dove effettuare l'upolad
    'la cartella non puo non esistere lo script non la crea ! ! !
    
    percorso = "/precom/foto/"
    
    'script per la lettura binaria dei cambi
    
    ByteRicevuti = Request.TotalBytes
    
    if ByteRicevuti > 0 then
    	DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    	For i = 1 To lenB(DatiRicevuti)
    		FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    	Next
    	FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    	ArrPezzi = split(FileBinario,FirmaFile)
    
    	for item = 1 to ubound(ArrPezzi)-1
    		Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    		Intestazione = left(ArrPezzi(item),Inizio-1)
    		Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    	    	ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    
    		' Recupero i campi se sono compilati
    		
    		if instr(Intestazione,"codice") > 0 then
    			codice = ContenutoFile
    		end if
    		if instr(Intestazione,"nome") > 0 then
    			nome = ContenutoFile
    		end if
    		if instr(Intestazione,"descrizione") > 0 then
    			descrizione = ContenutoFile
    		end if	
    		if instr(Intestazione,"tipo") > 0 then
    			tipo = ContenutoFile
    		end if	
    		if instr(Intestazione,"dispo") > 0 then
    			dispo = ContenutoFile
    		end if	
    		if instr(Intestazione,"vetrina") > 0 then
    			vetrina = ContenutoFile
    		end if
    		
    			
    		' Qui recupero il file da uploadare (se presente) foto1 
    		if instr(Intestazione,"foto") > 0 then
    		    i = instr(Intestazione,"filename=")
    			j = instr(i + 10,Intestazione,chr(34))
    			NomeUpload = mid(Intestazione,i + 10,j-i-10)
    			i = instrRev(NomeUpload,"\")
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
          				
    			'Qui ricavo l'estensione del file (se presente) per stabilire quale file passa e quale no, 
    			' nel mio caso gif e jpeg se non è di questo tipo mi da l'alert e torna dietro
    			if NomeFile > "" then
    			dim arrParti
    			arrParti=split(NomeFile,".")
    			dim strEstensione
    			strEstensione=arrParti(UBOUND(arrParti))
    
    			Select Case strEstensione
    				case "gif","jpeg","jpg"
    		'controllo che il file non abbia lo stesso nome di quello presente nella cartella dell upload
    				Set fso = CreateObject("Scripting.FileSystemObject") 
    				Set folderObject = fso.GetFolder(Server.MapPath(percorso)) 
    				Set filesObject = folderObject.Files  
    					For Each file In filesObject 
    						nomedelfile = fso.GetFileName(file)
    						if nomedelfile = NomeFile then
    							Response.write "<script language='javascript'>"
    							Response.write "foto();"
    							Response.write "</script>"
    						end if
    					next   
    				' Scrivo il file sul server
    				if i<>0 then
    					Set FSO = CreateObject("Scripting.FileSystemObject")
    					Upload1 = True
    					DimensioneFile1 = len(ContenutoFile)
    					'qui va inserito uno script che controlla il il peso dell'immagine
    					EstensioneFile1 = right(ContenutoFile,3)
    					foto = NomeFile
        				Set textStream = FSO.CreateTextFile(server.mappath(percorso & foto), True, False)
        				textStream.Write ContenutoFile
        				textStream.Close
        				Set textStream = Nothing
    	   				Set FSO = Nothing
    				  end if
    			case else
    				Response.Write "<script language='javascript'>" 
    				response.write "alert('E necessrio inserire solo file di tipo .gif .jpeg .jpg o .bmp');"
    				response.write "history.back();" 
    				response.write "</script>"
    			end select
    	end if
    	end if	
    		next
    end if		
    
    'Qui controllo che non esista lo stesso codice nel db
    	set connessione = server.CreateObject("ADODB.Connection")
    	connessione.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & server.MapPath("/database/prodotti.mdb"))
    	set rec = Server.CreateObject("ADODB.Recordset")
    	set rec = connessione.execute("select * from prodotti1 where codice='"&codice&"'")
    	'se non c è pocedi
    	
    	if rec.eof then
    	
    'Inserimento dati in db
    rec = ("Insert into prodotti1 (categoria, codice, nome, foto, descrizione, disponibilita, vetrina) values ('"&tipo&"','"&codice&"','"&nome&"','"&foto&"','"&descrizione&"','"&dispo&"','"&vetrina&"')")
    
    'controllo l esito del messaggio 
    on Error Resume next
    connessione.execute rec
    if err = 0 then
    rec.close
    set rec = nothing
    response.Redirect("descrizione.asp?codice="&codice)
    risultato = "ok"
    else
    risultato = "ko"
    response.Redirect("errore.htm")
    end if
    else
    Response.Write("E' gia presente un articolo con lo stesso codice nel catalogo")
    Response.Write("Torna indietro")
    end if
    else response.Redirect("login.asp")
    end if
    %>
    </body>
    </html>
    Grazie, ciao.

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.