Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    upload, cambiare nome fel file

    ciao a tutti!!! sto creando uno script per il download, qui sotto vi posto la parte per controllare se il file esiste già e se esiste ci aggiunge 1 o 2 o 3 e via discorrendo
    Codice PHP:
    do
    {
        
    $omonimo=1;
        
    $i=0;
        
    $i=$i+1;    
        
    $directory "upload";
        
    $open_handle opendir($directory);
        while(
    $read readdir($open_handle)){
            if(
    $read != "." && $read != ".."){    
                if(
    $read == $_FILES["upfile"]["name"]) {
                    
    $new_name $_FILES["upfile"]["name"] . $i;
                    
    $file_name = ($new_name) ? $new_name $_FILES["upfile"]["name"];
                    
    $omonimo=0;
                }
            }
        }
        
    closedir($open_handle);
    }
    while(
    $omonimo==0); 
    il problema è che continua a stare nel do while e non esce mai e non capisco il perchè

    grazie anticipatamente per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    non conosco bene le linee:

    $new_name = $_FILES["upfile"]["name"] . $i;
    $file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

    però l'ho trovate qua: http://php.html.it/articoli/leggi/848/upload-con-php/4/

    l'errore è forse un altro, se lo trovate ditemelo grazie

  3. #3
    Ciao,
    alcune considerazioni iniziali:

    1) $_FILES["upfile"]["name"] contiene il nome del file compresa l'estensione.
    Supponiamo che fai l'upload del file "immagine.jpg". Nel caso esista già quando aggiungi al nome il valore $i, non otterrai "immagine2.jpg", ma "immagine.jpg2".

    2) Considerando che hai la funzione php file_exists per verificare se un file è già presente sul server, mi sembra un pò assurdo ciclare tra tutti i file della cartella, soprattutto considerando che quest aumenteranno sempre più col tempo.



    Quale sia l'errore per il quale non esce dal ciclo, non so dirtelo. Ma sei sicuro che resta in quel ciclo? Non è che lo script si blocca perchè, uscito dal ciclo, non avendo alcun valore assegnato alla variabile $new_name, non fa poi quel che dovrebbe fare?
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    Originariamente inviato da Magicale
    Ciao,
    alcune considerazioni iniziali:

    1) $_FILES["upfile"]["name"] contiene il nome del file compresa l'estensione.
    Supponiamo che fai l'upload del file "immagine.jpg". Nel caso esista già quando aggiungi al nome il valore $i, non otterrai "immagine2.jpg", ma "immagine.jpg2".
    mmm... anche te hai ragione, potrei fare lo script che sposta l'estensione di una cella e poi inserisco il nome, però se diventa 10 o 100??? lo scriptcredo diventi un pò complicato

    Originariamente inviato da Magicale
    2) Considerando che hai la funzione php file_exists per verificare se un file è già presente sul server, mi sembra un pò assurdo ciclare tra tutti i file della cartella, soprattutto considerando che quest aumenteranno sempre più col tempo.
    a!!! l'ho provata subito!! bellissima sta funzione

    Originariamente inviato da Magicale
    Quale sia l'errore per il quale non esce dal ciclo, non so dirtelo. Ma sei sicuro che resta in quel ciclo? Non è che lo script si blocca perchè, uscito dal ciclo, non avendo alcun valore assegnato alla variabile $new_name, non fa poi quel che dovrebbe fare?
    questo non lo so, ma precedentemente ho fatto uno script che se il file esisteva già diceva solo che esisteva e che doveva rinominarlo, mo con questo while sta 30 secondi epoi vien l'errore..
    proverò un programma per il debug, me ne potete consigliare uno??

    ma soprattutto, c'è il modo per far quello che serve a me? ovvero se il file ciao.mp3 esiste i successivi saranno ciao1.mp3, ciao2.mp3 ecc ecc...

    grazie

  5. #5
    Una possibile soluzione:

    Codice PHP:

    $estensione 
    strtolowerstrrchr$_FILES['input_file']['name'] , ".") );

    $nome substr$_FILES['input_file']['name'] , strlen$_FILES['input_file']['name'] ) - strlen$estensione ) );

    $n=1;

    $nuovo_nome $nome $n $estensione;

    while ( 
    file_exists"upload_dir/" $nuovo_nome ) )
    {

         
    $n++;

         
    $nuovo_nome $nome $n $estensione;


    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    wooooooooo!!!!
    mega!!! funziona!!!
    grandissimo!!! frazie mille

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.