写了一段简单的服务器端文件上传的处理代码,但是英文名的文件名上传正常,中文名的文件名也不提示错误,但是上传后文件名变为空,比如“文档.doc”,上传后就变成了“.doc”。不知为什么,文件名应该是不能为空的。下面是我写的代码,其中是myfile是客户端上传input的name。<?
$upload_path = $_SERVER['DOCUMENT_ROOT']."/upload";
$dest_file = $upload_path.basename($_FILES['myfile']['name']);if(move_uploaded_file($_FILES['myfile']['tmp_name'].$dest_file))
{
echo "文件已上传至服务器!";
}
else
{
echo "发生错误".$_FILES['myfile']['error'];
}
?>
$upload_path = $_SERVER['DOCUMENT_ROOT']."/upload";
$dest_file = $upload_path.basename($_FILES['myfile']['name']);if(move_uploaded_file($_FILES['myfile']['tmp_name'].$dest_file))
{
echo "文件已上传至服务器!";
}
else
{
echo "发生错误".$_FILES['myfile']['error'];
}
?>
对文件名做一个编码转换$dest_file=iconv('UTF-8','GBK',$dest_file);utf-8 到 gbk 或者 gbk 到 utf-8 自己看看哪个正常吧。
看下什么情况。
你说的情况没遇到过。系统是否支持中文也应该在考虑范围内。
回复6#朋友,系统是中文的。打印myfile数组name索引的值可以显示中文,打印$_FILES['myfile']['name']也可以正常显示。
$dest_file = $upload_path.basename($_FILES['myfile']['name']);里面的$_FILES['myfile']['name']需要转一下编码,但是没有进行编码处理。但是我试了UTF-8到GBK和GBK到UTF-8,都不行,GBK到UTF8还显示乱码文件名。。
我怎么才能知道要从什么编码转到什么编码呀?
GBK到UTF-8 显示乱码
XML就没在gb下好好工作过...