Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    residenza
    Florence - Italy
    Messaggi
    60

    move_uploaded_file probelmi con sovrascittura

    come avevo letto su varie fonti la funzione sovrascrive i file se già esistono, peccato però che se il nome del file è uguale ma diversa l'estensione, ne escono fuori due se poi è uguale il nome e anche l'estensione ma cambia la dimensione allora sono tre !!!!

    es.
    1° move_uploaded_file -> immagine.bmp 100 kbyte
    2° move_uploaded_file -> immagine.jpg 200 kbyte
    3° move_uploaded_file -> immagine.jpg 076 kbyre

    secondo voi come evito la cosa ? conoscete una funzione in grado di rinominare i file "mossi" ?

    questo è quanto:
    //controlla l'invio di file
    if (isset($_FILES['imm']['tmp_name']))
    {
    // attribuisce a $namefile il nome utente con cui il file poi verrà salvato
    $namefile = $_SESSION["UTENTE"]; echo $_FILES['imm']['type'];
    // attribuisce a $tmp il nome del file temporaneo caricato, a $DIR invece il percorso per il salvatqaggio delle immagini, $est corrisponde all'esensione del file

    $tmp = $_FILES['imm']['tmp_name'];
    $est= str_replace("image/","",$_FILES['imm']['type']); echo $est;
    // controlla se il file inserito è di tipo immagine, se sì determina path salvataggio altrimenti notifica errore
    if ($est == $_FILES['imm']['type']) { echo "Tipo di file non valido !!! Solo immagini !!!"; $DIR=""; } else $DIR = 'C:\\www\\vhosts\\localhost\\image\\'.$namefile.". ".$est;
    // sposta il file temporaneo nella cartella definitiva

    $flag = move_uploaded_file ($tmp, $DIR);
    //if ($flag and $_FILES['imm']['error']==0 and $_FILES['imm']['size']<=235000)
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    residenza
    Florence - Italy
    Messaggi
    60

    p.s.

    ah dimenticavo ciao e grazie !!!

  3. #3

    Re: move_uploaded_file probelmi con sovrascittura

    Originariamente inviato da massimodue
    come avevo letto su varie fonti la funzione sovrascrive i file se già esistono, peccato però che se il nome del file è uguale ma diversa l'estensione, ne escono fuori due se poi è uguale il nome e anche l'estensione ma cambia la dimensione allora sono tre !!!!

    es.
    1° move_uploaded_file -> immagine.bmp 100 kbyte
    2° move_uploaded_file -> immagine.jpg 200 kbyte
    3° move_uploaded_file -> immagine.jpg 076 kbyre

    Il fatto che su diversa estensione i file vengano considerati diversi è cosa normale.
    Il fatto che nome uguale, estensione uguale ma diversa dimensione vengano considerati 2 differenti file ..... la cosa è altamente improbabile. In una directory non possono esistere 2 file con lo stesso nome (dove nome= nomefile+estensione). magari i nomi non sono propriamente uguali ma simili (ad esempio ci sono dei caratteri maiuscoli/minuscoli)etc..etc..

    Ah spe... forse ho mal compreso io. tu vuooi che se uno uppa 2 file con medesimo nome, questi vengano entrambi salvati su disco e non sovrascritti l'un l'altro?

    Originariamente inviato da massimodue
    secondo voi come evito la cosa ? conoscete una funzione in grado di rinominare i file "mossi" ?
    ....
    Dal percorso impostato mi sembra di capire che sei in ambiente windows, quindi niente distinzione tra maiuscole/minuscole.

    Puoi verificare prima di eseguire move_uploaded_file se un file con quel nome già esiste.
    Se già esite un file con tale nome, aggiungi un suffisso al nome del file (Es. aggiungi un "_001").

    esempio:

    1.nella cartella ho i file:
    immagine.bmp
    pippo.jpg

    2.Vado ad uppare "immagine.jpg"
    a. controllo se esiste "immagine.jpg" nella cartella
    b. non esiste ==> copio il file nella cartella

    3. Vado ad uppare il file "immagine.jpg" (una diversa immagina rispetto all aprecedente):
    a. controllo se esiste il file nella cartella
    b. Il file esiste, aggiungo un suffisso al nome:==> "immagina_001.jpg"
    c. controllo se già esiste un file con tale nome nella cartella
    d. il file non esiste ==> Copio il file nella cartella


    Un appunto:
    Se stai uppando un file di nome "immagina.jpg" da 100kbyte e nella cartella esiste già un file con tale nome e tale dimensione, cosa vuoi che venga fatto?
    Che la nuova immagine sia scartata, che la nuova immagine sostituisca la precedente, che la nuova immagine sia salvata con nuovo nome?

  4. #4
    if(file_exists($pathFile . $fileName))
    {
    $i = 1;
    do
    {
    $fileName = $baseName . "-" . $i . $extFile;
    $i++;
    } while(file_exists($pathFile . $fileName));
    }

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.