上传带特殊字符的文件时出现问

时间:2014-07-21 17:36:08

标签: php file-upload

我有一个代码,我在其中删除文件名的特殊字符(á,é,ñ,...)然后上传文件:

$new_name = gen_new_name($_FILES['document']['name'], $ext_doc);
move_uploaded_file($_FILES['documento_'.$a]["tmp_name"], "../soportes/".$new_name);

function gen_new_name($file, $extension) {
    $file_2 = stripAccents($file);
    $file_2 = str_replace(' ', '_', $file_2);
    $file_2 = preg_replace('/^[a-zA-Z0-9_-]+$/', '_', $file_2);
    $file_2 = basename($file_2, ".".$extension);

    $new_name = mt_rand().'_'.$file_2.'.'.$extension;
    return $new_name;
}
function stripAccents($string) {
    $accents = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ý','ý','þ','ÿ','Ŕ','ŕ');
    $string = str_replace($accents, '', $string);
    return $string;
}

我正在使用的html文件有<meta charset="utf-8">,我在body标签中包含了该函数的文件。

一切似乎都运行正常,问题是当它上传文件时,我检查文件名确实是通过gen_new_name()函数更改并回显新文件并显示没有特殊字符的名称并且在开始时的随机数,但是当它上传时它也会在开始时显示随机数,但特殊字符会转换为带有问号的方块和其他字符。

如果有人知道我怎样才能使用确切的新名称上传文件,我真的会赞成它...谢谢!!

0 个答案:

没有答案