最近在学习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>
显示错误
起初我以为是form表单不支持word文档格式,于是找个找图片,试了一下。
发现真的可以了!于是又找了另一张图片试了一下。
发现又不行了!
于是就多找了几幅图片试了一下,终于发现原来只要文件名含有中文的都不行!于是把刚开始那个word文件的文件名改成了英文名a.doc,又试了一下。
发现真的可以了!然后在upload文件夹看一下里面的内容。
发现,文件名没有中文的都上传成功了!
总结和反思:利用form表单上传文件,文件名不能为中文。这样肯定是不合理的。如何解决这个问题呢?楼主是小白,希望各位大神给予指点。