<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
if($_FILES["file"]["error"]){
echo "<script>alert('没有选择文件!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
}else{
if(($_FILES["file"]["size"]<10240000)and($_FILES['file']['type']=='application/pdf'))
{
//防止文件名重复
$filename="./upfile/".date('YmdHis',time()+8*60*60).'-'.$_FILES["file"]["name"];
//转码
$filename=iconv("UTF-8","gb2312",$filename);
if(file_exists($filename)){
echo "该文件已存在";
}else{
//保存文件
move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
echo "<script>alert('上传成功!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
}
}else{
echo "<script>alert('只能上传PDF文件!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
}
}上传文件的代码如上。我上传包含中文名的文件时经过转码已经可以成功上传文件了,并且发现上传的文件名也能以中文正确显示,但是问题是我点击文件名打不开文件,在地址栏发现文件名的中文部分是乱码的,怎么解决转码后是中文名又可以正常打开文件呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
试一下你保存文件名的时候使用gbk编码,然后读取文件名再转成utf8
如果我把$filename=iconv("UTF-8","gb2312",$filename);换成了$filename=iconv("gb2312","UTF-8",$filename); 发现上传成功后可以正常打开文件了,但是又出现了在浏览器上显示的文件名是乱码的。 请问结合我上面发的,这个问题该怎么解决呢?有好解决方法的请赐教。