PHP 实现文件上传
file.html 表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传</title> </head> <body> <form action="file.php" method="POST" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> </body> </html>
file.php 接收文件
<?php header('content-type:text/html;charset=utf-8'); //接收文件 $file=$_FILES['file']; //调用文件上传函数 include_once 'fileUpload.php'; $res=fileUpload($file,'Upload/',$error);//自己创建一个Upload文件夹来保存上传成功的文件 if ($res){ echo "文件上传成功"; }else{ echo $error; }
fileUpload.php 文件上传的封装函数
<?php //文件上传函数封装 /* * @param1 array $file,要上传的文件信息,包含5个元素 *@param2 string $path,存储位置 * @param3 $string error,错误信息 * @param4 array $type=array(),MIME类型限定 * @param5 int $size=2000000,默认2M * @return mixed, 成功返回文件名,失败返回false */ function fileUpload($file,$path,&$error,$type=array(),$size=2000000 ){ //判断本身文件是否有效 if(!isset($file['error'])){ $error='文件无效'; return false; } //有效路径的判断 if(!is_dir($path)){ $error='存储路径无效'; return false; } //判断文件本身上传是否成功 switch ($file['error']){ case 1: case 2: $error='文件超过服务器允许大小'; return false; case 3: $error='文件只有部分上传'; return false; case 4: $error='用户没有选择文件上传'; return false; case 6: case 7: $error='服务器操作失败'; return false; } //判断类型是否符合 if (!empty($type) && !in_array($file['type'],$type)){ $error='当前上传的文件类型不符合'; return false; } //大小判断 if ($file['size']>$size){ $error='文件大小超过当前允许范围.当前允许大小是:'.string($size/1000000).'M'; return false; } //转存,移动文件 $newfilename=getNewName($file['name']); if(@move_uploaded_file($file['tmp_name'],$path.''.$newfilename)){ return $newfilename; } else{ $error='文件上传失败'; return false; } } //随机产生一个文件名 function getNewName($filename,$rand=6){ $newname=date('YmdHis');//时间日期部分 //随机部分 $old=array_merge(range('a','z'),range('A','Z')); shuffle($old); for ($i=0;$i<$rand;$i++){ $newname.=$old[$i]; } return $newname.strstr($filename,'.');//组织有效文件名 }
输出:如果上传成功就显示:文件上传成功;会在Upload文件夹中保存上传成功的文件
失败就显示:上传失败的原因
如: