我做了一个会员管理系统,在实现照片上传的代码如下:
$fileinfo="";
if(isset($_POST['btnUpload'])){
$uploaddir="photos/";
if(!file_exists($uploaddir)) mkdir($uploaddir);
$path=pathinfo($_FILES["filePhoto"]["name"]);
$ext=$path["extension"];
$uploadfile=$uploaddir.$_SESSION["MM_Username"].".".$ext;
if(move_uploaded_file($_FILES["filePhoto"]["tmp_name"],$uploadfile)){
$fileinfo="<br>文件名:".$_FILES["filePhoto"]["name"]."<br>";
$fileinfo.="文件类型:".$_FILES["filePhoto"]["type"]."<br>";
$fileinfo.="文件大小:".$_FILES["filePhoto"]["size"]."字节<br>";
$fileinfo.="文件上传成功!<br>";
$insertSql=sprintf("update members set photo='%s' where username='%s'",$uploadfile,$_SESSION['MM_Username']);
$insertRs=mysql_query($insertSql) or die(mysql_error());
if($insertRs) $fileinfo.="照片信息已经成功保存到数据库中。<br>";
else{
$fileinfo="<P>文件上传失败!";
}
}
}
其中$_SESSION["MM_Username"]为登录会员名,当会员名字为数字或英文的时候上传很顺利,但如果会员名字为汉字就会出现问题:Warning: move_uploaded_file(photos/张博强.jpg) [function.move-uploaded-file]: failed to open stream: Invalid argument in E:\program files\apache\htdocs\huiyuanguanli\upload.php on line 56Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php19.tmp' to 'photos/张博强.jpg' in E:\program files\apache\htdocs\huiyuanguanli\upload.php on line 56
请问高手我该如何解决这个问题呢?是不是字符编码的问题?
$fileinfo="";
if(isset($_POST['btnUpload'])){
$uploaddir="photos/";
if(!file_exists($uploaddir)) mkdir($uploaddir);
$path=pathinfo($_FILES["filePhoto"]["name"]);
$ext=$path["extension"];
$uploadfile=$uploaddir.$_SESSION["MM_Username"].".".$ext;
if(move_uploaded_file($_FILES["filePhoto"]["tmp_name"],$uploadfile)){
$fileinfo="<br>文件名:".$_FILES["filePhoto"]["name"]."<br>";
$fileinfo.="文件类型:".$_FILES["filePhoto"]["type"]."<br>";
$fileinfo.="文件大小:".$_FILES["filePhoto"]["size"]."字节<br>";
$fileinfo.="文件上传成功!<br>";
$insertSql=sprintf("update members set photo='%s' where username='%s'",$uploadfile,$_SESSION['MM_Username']);
$insertRs=mysql_query($insertSql) or die(mysql_error());
if($insertRs) $fileinfo.="照片信息已经成功保存到数据库中。<br>";
else{
$fileinfo="<P>文件上传失败!";
}
}
}
其中$_SESSION["MM_Username"]为登录会员名,当会员名字为数字或英文的时候上传很顺利,但如果会员名字为汉字就会出现问题:Warning: move_uploaded_file(photos/张博强.jpg) [function.move-uploaded-file]: failed to open stream: Invalid argument in E:\program files\apache\htdocs\huiyuanguanli\upload.php on line 56Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php19.tmp' to 'photos/张博强.jpg' in E:\program files\apache\htdocs\huiyuanguanli\upload.php on line 56
请问高手我该如何解决这个问题呢?是不是字符编码的问题?
windows系统,需要将编码转换为gbk
linux需要将编码转换为utf-8