Visualizzazione dei risultati da 1 a 8 su 8

Discussione: File Exists

  1. #1

    File Exists

    Ciao ragazzi,
    come da oggetto cercavo di risolvere un problema sull'upload immagini.
    Sto editando una pagina del software open source MWOPEN per fare inmodo che quando faccio un upload di una immagine che giàò esiste sul server non mi dia errore.
    Ho provato a verificare la condizione del fileexists inquesto modo, ma continua a non andare:


    if NomeFile<>"" then
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Upload2 = True
    DimensioneFile2 = len(ContenutoFile)
    if len(w_GFoto)=0 then
    NomeFile2 = NomeFile
    w_GFoto = NomeFile
    else
    NomeFile2 = w_GFoto
    end if
    if DimensioneFile2 > maxdimg then
    Errore = Errore & "Dimensione immagine grande ("&DimensioneFile2*0.001 & " kb) maggiore del limite consentito ("&maxdimg*0.001 & " kb)
    "
    else
    EstensioneFile2 = LCase(right(NomeFile,4))
    if EstensioneFile2 <>".jpg" and EstensioneFile2 <>".gif" then
    Errore = Errore & "Tipo di file non corretto : "&EstensioneFile2&"
    "
    else
    ArrayNome(1) = Split(NomeFile2, "/")
    SoloNome = ArrayNome(1)

    if (FSO.FileExists(server.MapPath(percorso & SoloNome)))then
    Errore = Errore & "File già esistente sul server"
    else
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile2), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    end if
    end if
    end if
    Set FSO = Nothing
    end if
    end if


    Ho messo in grassetto la parte aggiunta da me.
    Riuscita ad aiutarmi per capire come aggiustare?
    Grazie a tutti

  2. #2
    sei sicuro che il percorso sia giusto e che l'if sia posizionato corettamente? indenta un pò il codic eche come l'hai postato non si capisce nulla

  3. #3
    Cia Santino,
    allora non sono l'unico nottambulo in giro per il forum!
    scusami pensavo di averlo messo fra i tag code:
    codice:
    if NomeFile<>"" then	
    	  			Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload2 = True
    				DimensioneFile2 = len(ContenutoFile)
    				if len(w_GFoto)=0 then
    					 NomeFile2 = NomeFile
    					 w_GFoto = NomeFile					 
     				else
     					 NomeFile2 = w_GFoto	
     				end if	 			
    				if DimensioneFile2 > maxdimg then
    					 Errore = Errore & "Dimensione immagine grande ("&DimensioneFile2*0.001 & " kb)  maggiore del limite consentito ("&maxdimg*0.001 & " kb)
    "
    				else
    						EstensioneFile2 = LCase(right(NomeFile,4))				
    						if EstensioneFile2 <>".jpg" and EstensioneFile2 <>".gif" then
    							 Errore = Errore & "Tipo di file non corretto : "&EstensioneFile2&"
    "
    						else		 	
    							ArrayNome(1) = Split(NomeFile2, "/")
    							SoloNome = ArrayNome(1)
    							
    							if (FSO.FileExists(server.MapPath(percorso & SoloNome)))then
    							Errore = Errore & "File già esistente sul server"
    							else
    							Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile2), True, False)
        						textStream.Write ContenutoFile
        						textStream.Close
        						Set textStream = Nothing
    						end if
    						end if
    				end if		
    	   		Set FSO = Nothing
        	end if
    		end if
    Nel database come valore di foto inserisce una cosa di questo tipo:
    prodotti/nomefoto.jpg

    per questo ho fatto lo split e quindi l'array.
    La sintassi mi sembra giusta, o mi sbaglio?

    Grazie

  4. #4
    se il codice è tutto li, c'è un end if di troppo alla fine


    controlla che questo

    codice:
    FSO.FileExists(server.MapPath(percorso & SoloNome))
    stampi un valore corretto facendo prima dell'if

    codice:
    response.write server.MapPath(percorso & SoloNome)
    response.end
    
    if ....
    e guarda se al percorso che stampa corrisponda l'immagine già presente

  5. #5
    e infatti l'errore era proprio sul nome dle file.
    non recuperavo con l'indice dell'array un valore giusto per il nome del file.
    Ho dovuto modificarlo così:

    codice:
    else		 	
    							ArrayNome = Split(NomeFile2, "/")
    							SoloNome = ArrayNome(0)
    							'response.write server.mappath(percorso & solonome)
    'response.end
    
    							if (FSO.FileExists(server.MapPath(percorso & SoloNome)))then
    							Errore = Errore & "File già esistente sul server"
    Grazie mille per il suggerimento.
    Alla fine un debug a video risulta sempre la soluzione piu semplice.
    Adesso pensavo di fare un rinomina del nome del file in automatico se il file già esiste usando una funzione random, così da aggiungere questo valore al nome del file, ed ottenere un nome file di questo tipo:
    nomefile_XDF24DFdg356D.jpg

    che ne dici, può andare come soluzione per evitare che l'amministratore del sito debba rinominare il file ogni qualvolta questo già esiste sul server?
    Grazie!

  6. #6
    non fai prima a

    - controllo se il file esiste: se esiste, lo elimino e faccio l'upload, altrimenti faccio l'upload e basta?

  7. #7
    e no perchè se esiste significa che un altro prodotto ha un file con lo stesso nome.
    E' un sito di ecommerce.
    Immagina che l'amministratore del sito aggiunge un prodotto ed il file immagine associato a quel prodotto ha lo stesso nome di un prodotto inserito una settimana prima.
    Ho bisogno che per il nuovo prodotto venga utilizzato un nome di file differente da quello già inserito, senza sovrascrivere o eliminare il precedente.
    Spero di essermi spiegato...

  8. #8
    basta che dai come nome dell'immagine l'id del prodotto che hai inserito nel db

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.