文件上传可以大致分为几个步骤:
1.获取上传对象
2.检验上传是否能成功上传
3.判断上传文件类型
4.判断上传文件大小
5.判断是否为上传文件
6.移动到指定位置
从别的大牛那整理的:MIME.php。见文章列表(不知道怎么添加附件,大家包涵)
<?php error_reporting(E_ALL^E_WARNING); include 'MIME.php';//导入允许的上传文件类型 $size = 1000000;(也可以在form表单中用隐藏域设置大小值) //限制上传文件大小 $path = "./uploads"; //上传文件到指定路径 $myfile = $_FILES['myfile'];
//调用文件上传类 echo uploadFile($myfile, $size, $allowType, $path);
/** * 构造方法用来实例化文件上传对象 * @author xiaohuixiong * @version 版本1.0 | 2013-11-11 * @param int $myfile | $_FILES['myfile'] | 文件的参数名 * @param int $size | 文件的限制大小 * @param int $path | 上传文件的指定存储位置 * @param int $allowType | 限制上传文件的类型 | 从MIME.php中导入 **/ function uploadFile($myfile, $size, $allowType, $path){ if($myfile['error'] > 0){//判断文件是否可以成功上传 $errors = "上传错误"; switch($myfile['error']){ case 1: $errors = "文件上传大小超出了表单中的约定值!"; case 2: $errors = "上传文件大小超出了表单中的约定值!"; case 3: $errors = "文件只被部分上传!"; case 4: $errors = "没有上传任何文件!"; default: $errors = "未知错误!"; } }elseif(isset($allowType) && !in_array($myfile['type'], $allowType)){//判断上传文件的类型 $errors = "上传文件类型不支持!"; }elseif(isset($size) && $myfile['size'] > $size){//判断文件上传的大小 $errors = "文件太大!"; }else{ //判断在指定路径,重命名并判断是否已经存在 do{ $uploadName = time()."-".rand(1,9999)."-".$myfile['name']; }while(file_exists($path.'/'.$uploadName)); //判断是否为上传文件(如果是就移动文件) if(is_uploaded_file($myfile['tmp_name'])){ //移动文件到指定目录 if(!move_uploaded_file($myfile['tmp_name'], $path.'/'.$uploadName)){ $errors = "不能将文件移动到指定目录!"; }else{ $errors = "OK!"; } }else{ $errors = "上传的文件不是一个合法文件!"; } } return $errors; }