Salve, ho questo problema: ho un form per l' upload di file in php tutto funziona bene tranne quando il file da uplodare ha qualche lettera accentata nel suo nome, ho provato a pulire la stringa del nome del file prima di uplodarlo e me la pulisce ma poi quando sul front clicco sul link del file mi dice file non trovato (il file è presente sul server e l' indirizzo è corretto, tutti gli altri file funzionano correttamente) vi mostro il codice spero qualcuno possa aiutarmi cosi da risolvere il problema una volta per tutte.
-----------------------------------------------------------------------------------------
Codice PHP:
if (@$_FILES['uploadfile']['error'] != 0) {
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=6");
}
// controllo che non ci siano stati errori nell'upload (codice = 0)
else {
// upload ok
$data_file = time();
@$nome_file = $_FILES['uploadfile']['name'];
$nome_file = SostituisciAccenti($nome_file);
// sostituisco gli accenti con un trattino
$nome_file = str_replace ("'", "-", $nome_file);
// tolgo gli spazi prima e dopo
$nome_file = ltrim($nome_file);
$nome_file = rtrim($nome_file);
$nome_file = ereg_replace("[^A-Za-z0-9_\-\./ ]", "", $nome_file); // rimuove special characters
$nome_file = ereg_replace(" {1,}", "-", $nome_file); // sostituisce uno o piu spazi consecutivi con un underscore
// compongo il nome del file
$nome_file = "id-".$id_cartella_padre."-".$data_file."-".$nome_file;
$nome_file = strtolower($nome_file);
// controllo i tipi di file che non possono essere uplodati tipo .exe .php .html .js
if ($_FILES['uploadfile']['type'] == "application/octet-stream" or $_FILES['uploadfile']['type'] == "text/html" or $_FILES['uploadfile']['type'] == "application/x-javascript" or $_FILES['uploadfile']['type'] == "text/asp") {
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=5"); //file non valido
}
if ($_FILES['uploadfile']['size'] > 314572800) {
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=4"); // errore, file troppo grande (> 300MB)
}
// copio il file dalla cartella temporanea a quella di destinazione cioè la cartella file che si trova nella cartella mantenendo il nome originale
$percorso_upload = URL_FILE_UPLOAD.$nome_file;
copy($_FILES['uploadfile']['tmp_name'], $percorso_upload);