Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619

    Aggiungere il timestamp al nome di un file uploadato

    Ciao,

    sto cercando un codice elegante per aggiungere appena prima dell'estensione di un file un underscore seguito dal timestamp.

    Qualche consiglio?

    Vorrei trovare la posizione dell'ultimo punto nel nome del file (fino a qui ci arrivo) e inserirci appena prima la stringa "_timestamp".

    Esiste un funzione cha fa al caso mio?

  2. #2
    Nessuna funzione! Il nome si costruisce quando vai a salvare il file in una posizione definitiva

    Codice PHP:
    move_uploaded_file($tmp_name $path_to_dest '/' $new_file_name '_' time() ) ; 
    Ecco come si ottiene quello che ti serve. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Uhm,

    ma io vorrei che "_timestamp" stesse prima del punto prima dell'estensione e non alla fine del nome del file


    esempio:

    file.txt

    diventa:

    file_123426425.txt

  4. #4
    L'estensione ce la devi mettere tu! Non la mette in automatico!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Mi sa che ti sbagli, quando fai l'upload prende il nome del file dall'hard disk estensione compresa e quindi qualcosa del tipo "file.txt".

    Ponendo che name sia il nome del file completo di estensione io ho fatto una cosa del genere e funziona ma penso che ci siano modi migliori, magari fare tutto con una regexp

    $pointindex = strrpos($name,".");

    $clear_name = substr($name,0,$pointindex);
    $ext = substr($name,$pointindex);
    $name = $clear_name.".".time().$ext;

  6. #6
    Aspetta. Allora forse non ho capito. Se tu vuoi aggiungere il timestamp e lasciare il nome invariato (per intenderci usi il nome contenuto in $_FILES['name']) allora hai ragione. Ma se il nome lo assegni nuovamente l'estensione la devi mettere tu. Ora, assumendo che io abbia sbagliato e che quindi tu volgia lasciare il nome invariato, le soluzioni sono molte (php, però, non prevede una funzione che faccia tutto da sola).

    La soluzione più semplice che mi viene è questa (che può essere usata anche con nomi di file contengono più punti oltre quello che separa nome ed estensione):

    Codice PHP:
    function addTimeStamp$name ) {
        
    $parts     explode'.' $name ) ;  // Le varie parti del nome esplose in base al "."
        
    $ext       $parts[count$parts ) - 1] ; // L'estensione del file
        
        // Elimino dall'array l'estensione
        
    unset( $parts[count$parts ) - 1] ) ;
        
        
    // Ricostruisco il nome e lo restituisco
        
    return implode'.' $parts ) . '_' time() . '.' $ext ;
    }

    $file 'prova.jpeg' ;
    echo 
    addTimeStamp$file ) ; 
    La funzione non è molto difficile. Se non dovessi capire qualche passaggio, comunque, dimmelo che te lo spiego.

    Solo una precisazione voglio farla subito: ho usato l'explode per ottenere l'estensione perchè il limite di tre caratteri per la stessa ormai non esiste più. Ne consegue che alcuni file hanno estensioni con un numero di caratteri superiore a tre. Ci stavo ragionando proprio prima. Ho fatto una classe per l'upload e per ottenere l'estensione avevo usato un substr basato su un estensione di tre caratteri. Di conseguenza non sarebbe possibile l'upload di file con estensioni più lunghe. La soluzione che ho usato ora, invece, supera tale limite. Spero di esserti stato utile! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.