用PHP接收上传文件,文件名中的中文部分在服务器端显示为问号?
【遇到的问题】
尝试使用 PHP 接收上传文件,文件接收成功,但是文件名中的中文部分在服务器端却一直显示为问号?

使用 FTP 上传的中文名文件可正常显示;
文件内容中的中文字符也没有问题!
【进行过的尝试】
自己判断应该是编码问题,但是分别使用了——
均没有成功。
另外还尝试先将上传文件另存为“UTF-8”的编码,结果一样!
【测试环境】
服务器端
主机类型:阿里云虚拟主机
操作系统:CentOS 6.5 64位
PHP版本:PHP5.5
客户端
操作系统:Windows 10 家庭中文版 1803
【相关代码】
upload.html(上传)
upload.php(接收)
尝试使用 PHP 接收上传文件,文件接收成功,但是文件名中的中文部分在服务器端却一直显示为问号?

使用 FTP 上传的中文名文件可正常显示;
文件内容中的中文字符也没有问题!
【进行过的尝试】
自己判断应该是编码问题,但是分别使用了——
iconv('UTF-8','gbk',$_FILES['userfile']['name']);iconv('UTF-8','gb2312',$_FILES['userfile']['name']);iconv('gbk','UTF-8',$_FILES['userfile']['name']);iconv('gb2312','UTF-8',$_FILES['userfile']['name']);均没有成功。
另外还尝试先将上传文件另存为“UTF-8”的编码,结果一样!
【测试环境】
服务器端
主机类型:阿里云虚拟主机
操作系统:CentOS 6.5 64位
PHP版本:PHP5.5
客户端
操作系统:Windows 10 家庭中文版 1803
【相关代码】
upload.html(上传)
<html>
<head>
<title>Administration - upload new files</title>
</head>
<body>
<h1>Upload new news files</h1>
<form action="upload.php" method="post" enctype="multipart/form-data">
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
<label for="userfile">Upload a file:</label>
<input type="file" name="userfile" id="userfile"/>
<input type="submit" value="Send File"/>
</div>
</form>
</body>
</html>upload.php(接收)
<html>
<head>
<title>Uploading...</title>
</head>
<body>
<h1>Uploading file...</h1>
<?php
$filename=iconv('UTF-8','gbk',$_FILES['userfile']['name']);
$upfile='../uploads/'.$filename;
if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
if(!move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){
echo "Problem:Could not move file to destination directory.";
exit;
}
}else{
echo "Problem:Possible file upload attack.Filename:".$filename;
exit;
}
echo "File uploaded successfully.<br/><br/>";
?>
</body>
</html>
...全文
相关推荐
php实现文件上传并返回获得上传后文件名
php实现文件上传并返回获得上传后生成的文件名。
php上传文件中文文件名乱码的解决方法
想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了
delphi客户端文件上传代码和服务器端php接收代码
delphi客户端,含文件上传功能,upload.php放于php运行目录下,服务端将自动接收并保存在服务器,简单样例,测试可用。
php上传中文文件名乱码问题处理方案
主要介绍了php上传中文文件名乱码问题处理方案,需要的朋友可以参考下
浅析PHP 中move_uploaded_file 上传中文文件名失败
项目需要上传文件名保持不变,发现上传中文失败:错误如下: move_uploaded_file(public/upload/files/2019/04-17/\开密二次开发.rar): failed to open stream: Invalid argument 失败的原因大致猜到是编码问题.保存文件时,需要将中文由utf8转为gb2312。 <?php $files = $_FILES['attachment']; // 上传的表单附件名 $name = iconv(UTF-8, gb2312, $files['name']); move_uploaded_file($fil


基础编程

