文件上传就是客户端把文件上传到服务器的临时目录,然后服务器将文件移动到指定目录的过程。
web客户端文件上传必须具备的两点:
1.表单为POST方式提交
2.form添加enctype="multipart/form-data"属性
<form action="upload_file.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
在服务器端,$_FILES变量可获取上传文件的信息,然后通过move_uploaded_file()移动文件到指定目录即可
<?php $file = $_FILES['file']; /*获取文件信息*/ $tmp_name = $file['tmp_name']; /*获取临时文件信息*/ $file_name = "upload/".$file['name']; /*设置文件的保存路径和名称,这里直接使用原本文件名,实际应用中应该处理一下文件名*/ if($file['error'] == 0){ //将临时文件移动到指定位置 if(move_uploaded_file($tmp_name, $file_name)){ echo $tmp_name; echo "上传成功"; } else{ echo "上传失败"; } } else{ echo "上传失败,错误代码:".$file['error']; }
$_FILES['file']['error']的值是文件上传相关的所有错误信息:
0:上传成功;
1:上传文件过大(由php配置文件中的upload_max_filesize指定);
2:上传文件超过表单限制;
3:文件只上传了一部分;
4:没有上传文件;
5:5?不存在的!不要问为什么就是没这个错误代码;
6:没有临时目录;
7:文件写入失败;
也许还有其他错误代码,反正我不知道了~
*文件上传存在安全隐患,一般情况下不应该允许所有人都可以上传文件到服务器。如果允许,应该严格规定上传的文件,包括文件类型,重命名文件名等等。