no no così non funziona... stai cercando di recuperare un file che non esiste... ti propongo due versioni diverse: quella che dicevo io prima e quella (forse migliore) di OhMyGod:
versione "irais":
Codice PHP:
<?php
//create the directory if doesn't exists (should have write permissons)
if(!is_dir("./folder")) mkdir("./folder", 0755);
//move the uploaded file
move_uploaded_file($_FILES['Filedata']['tmp_name'], "./folder/" . $_FILES['Filedata']['name'] . md5(time()));
chmod("./folder/".$_FILES['Filedata']['name']. md5(time()), 0777);
?>
versione "OhMy": (scusa l'abbreviazione amichevole :P)
Codice PHP:
<?php
/*
Restituisce un codice alfanumerico univoco di almeno 12 cifre.
Converte in base 36 un microtime.
*/
function unique_id_alphanum() {
$now = (string)microtime();
$now = explode(' ', $now);
$unique_id = $now[1].str_replace('.', '', $now[0]);
unset($now);
return strtoupper(base_convert($unique_id, 10, 36));
}
//create the directory if doesn't exists (should have write permissons)
if(!is_dir("./folder")) mkdir("./folder", 0755);
$codiceunivoco = unique_id_alphanum();
//move the uploaded file
move_uploaded_file($_FILES['Filedata']['tmp_name']), "./folder/".$_FILES['Filedata']['name'] . $codiceunivoco);
chmod("./folder/".$_FILES['Filedata']['name']. $codiceunivoco, 0777);
?>
Dove sta la differenza? La mia versione crea una stringa piuttosto lunga prendendo un timestamp (la funzione time() ), criptandola in md5 (algoritmo di crittazione ad una via, è inutile il suo scopo in questo ambito, ma è comodo per generare una stringa alfanumerica) e poi la attacca al nome del file uploadato.
Quella di OhMyGod genera una stringa di 16 caratteri (tutti maiuscoli, occhio se hai un server linux) che viene poi attaccata allo stesso modo alla fine del nome del file.
In entrambi i casi **occhio alle estensioni**.