最近在学习php,刚好学到利用表单上传文件这一知识。在学习的过程中,出现了这样几个问题,我是小白,还请高手指点。

大家都知道在上传文件时,我们要设置表单的MIME编码。默认情况,enctype的编码格:application/x-www-form-urlencoded,不能用于文件上传, 只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。但是我在接下来的操作中,遇到了这样的问题。

<?php
  if (isset($_POST['submit']) && $_POST['submit'] != null) {
   print_r($_FILES);
   $upload_dir = 'upload/';
   $tmp_name  =  $_FILES [ "upload_file" ][ "tmp_name" ];
   $name  =  $_FILES [ "upload_file" ][ "name" ];
     if(move_uploaded_file ($tmp_name,$upload_dir.$name)== true){
         echo "上传文件成功!";
    }
?>
<form action="" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="upload_file" /><br />
<input type="submit" name="submit" value="提交" />
</form>


显示错误

wKiom1XDBlXiqOOWAAOc8ou-V_M815.jpg


起初我以为是form表单不支持word文档格式,于是找个找图片,试了一下。

wKioL1XDCeXACEGdAAC5Y1LNtD4941.jpg



发现真的可以了!于是又找了另一张图片试了一下。

wKioL1XDCuTiMu52AAN8ZjIQf6A932.jpg

发现又不行了!


于是就多找了几幅图片试了一下,终于发现原来只要文件名含有中文的都不行!于是把刚开始那个word文件的文件名改成了英文名a.doc,又试了一下。

wKioL1XDC63xyhX9AADC2_sNFpU794.jpg


发现真的可以了!然后在upload文件夹看一下里面的内容。

wKiom1XDCkqSNGgLAAD1XBu0v78956.jpg

发现,文件名没有中文的都上传成功了!


总结和反思:利用form表单上传文件,文件名不能为中文。这样肯定是不合理的。如何解决这个问题呢?楼主是小白,希望各位大神给予指点。