oltre ai problemi che ti ha citato grino ve ne sono anche altri:
- sul pc l'utente può salvare i file utilizzando caratteri "brutti":
questi ne sono alcuni che scopiazzai da qualche parte... non ricordo dove
codice:
$char_bad = array(
							'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 
							'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 
							'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 
							'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 
							'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 
							'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 
							'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
							'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 
							'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 
							'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 
							'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 
							'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 
							'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 
							'ÿ'=>'y', 'ƒ'=>'f');
- sul pc dell'utente potrebbero esserci gli "spazi" e un URL con degli spazi non sono una bella cosa...

a fronte delle problematiche esposte io ho faccio una funzione filtro del nome
ad es.
Codice PHP:
$new_name preg_replace
                     array(
"/\s+/""/[^-\.\w]+/"), 
                     array(
"_"""), 
                     
trim($_FILES['upload']['name'])); 
oppure rinomino il file dandogli un nome sicuro al 100% stando attento a preservare l'estensione del file
ad es.
Codice PHP:
function catch_estensione($file_name='')
    {
    
$ext strtolower(end(explode('.'$file_name)));
    return 
$ext;
    }
$new_name time().catch_estensione($_FILES['upload']['name']);