• User Attivo

    Script carica foto,problema caratteri nome file

    Ciao ragazzi,
    ho uno script per caricare delle foto ed è funzionante,ora però c'è un problema..praticamente ho notato che un file dal nome Ortin%20Cam%20-%20I%20Love%20Techno%202006.jpeg me lo carica sul sito però alla visualizzazione mi da un bel x..come mai??
    Qualcuno sa spiegarmi come mai accade ciò?Sarà per via dei caratteri speciali che sono presenti nella stringa del nome del file??Se si come posso risolvere?

    Grazie


  • User Attivo

    Ho risolto facendo cosi'

    [PHP]
    //recupero il nome originale dei file caricati
    $userfile_name = $_FILES['userfile']['name'];
    $userfile_name1 = $_FILES['userfile1']['name'];
    $userfile_name2 = $_FILES['userfile2']['name'];
    $userfile_name3 = $_FILES['userfile3']['name'];

    // Elimino dalla stringa dei file i caratteri speciali
    $userfile_name = str_replace("&", "o", $userfile_name);
    $userfile_name1 = str_replace("&", "o", $userfile_name1);
    $userfile_name2 = str_replace("&", "o", $userfile_name2);
    $userfile_name3 = str_replace("&", "o", $userfile_name3);

    $userfile_name = str_replace("%", "o", $userfile_name);
    $userfile_name1 = str_replace("%", "o", $userfile_name1);
    $userfile_name2 = str_replace("%", "o", $userfile_name2);
    $userfile_name3 = str_replace("%", "o", $userfile_name3);

    $userfile_name = str_replace("-", "o", $userfile_name);
    $userfile_name1 = str_replace("-", "o", $userfile_name1);
    $userfile_name2 = str_replace("-", "o", $userfile_name2);
    $userfile_name3 = str_replace("-", "o", $userfile_name3);

    [/PHP]

    Ora funziona..si trattava dei caratteri speciali presenti nei nome dei file che si andavano a uppare..secondo voi è un metodo sicuro quello da me adottato..?
    Mi conviene fare ancora piu' controlli sulle stringhe dei nomi dei file??


  • User Attivo

    Ciao,
    io generalmente utilizzo una funzione trovata nel web qualche anno fa per sostituire i caratteri non alfanumerici:
    [PHP]
    function getRewriteString($stringa)
    {
    $carattere_sostitutivo="-";
    $string = strtolower(htmlentities($stringa));
    $temp = preg_replace("/&(.)(uml);/", "$1e", $temp);
    $temp = preg_replace("/&(.)(acute|cedil|circ|ring|tilde|uml|grave);/", "$1",$temp);
    $temp = preg_replace("/([^a-z0-9]+)/", $carattere_sostitutivo,html_entity_decode($temp));
    $temp = trim($temp, $carattere_sostitutivo);
    return $temp;
    }
    [/PHP]
    Attenzione però che devi isolare il nome del file dall'estensione, altrimenti viene sostituito anche il . prima dell'estensione del file.

    Alessandro