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!