批改状态:未批改
老师批语:
class Upload{private $path;private $size;private $type;private $error;public function __construct($path, $size, $type){$this->path = $path;$this->size = $size;$this->type = $type;}// 返回错误信息public function getError(){return $this->error;}// 验证上传是否有误public function checkError($files){// 1. 验证错误号if ($files['error'] != 0) {switch ($files['error']) {case 1:$this->error = '文件大小超过了php.ini中允许的最大值,最大值是:'.ini_get('upload_max_filesize');return false;case 2:$this->error = '文件大小超过了表单允许的最大值';return false;case 3:$this->error = '只有部分文件上传成功';return false;case 4:$this->error = '没有文件上传成功';return false;case 6:$this->error = '找不到临时文件';return false;case 7:$this->error = '文件写入失败';return false;default:$this->error = '未知错误';return false;}}// 2. 验证格式$info = finfo_open(FILEINFO_MIME_TYPE);$mime = finfo_file($info, $files['tmp_name']);if (!in_array($mime, $this->type)) {$this->error = '只能上传'.implode(',', $this->type).'格式';return false;}// 3. 验证大小if ($files['size'] > $this->size) {$this->error = '文件大小不能超过HTTP POST上传的';return false;}if (!is_uploaded_file($files['tmp_name'])) {$this->error = '文件不是HTTP POST上传的';return false;}return true;}// 文件上传public function uploadOne($files){if ($this->checkError($files)) { // 没有错误就上传$folderName = date('Y-m-d'); // 文件夹名$folderPath = $this->path . $folderName; // 文件夹路径if (!is_dir($this->path))mkdir($this->path,0777);if (!is_dir($folderPath))mkdir($folderPath,0777);$fileName = uniqid('', true) . strrchr($files['name'], '.'); //文件名$filePath = "$folderPath / $fileName";if (move_uploaded_file($files['tmp_name'], $filePath)) {return "${$folderPath} / {$fileName}";} else {$this->error = '上传失败<br>';return false;}}return false;}}2.上传页 index.html<form action="doupload.php" method="post" enctype="multipart/form-data"><input type="file" name="file" id="file"><button type="submit" id="btn">上传</button></form>3.处理上传 doupload.phprequire 'Upload.php';$path = './uploads/';$size = 5242880;$type = ['image/png','image/jpeg','image/gif','image/jpg','image/wbmp'];$upload = new Upload($path, $size, $type);$file = $_FILES['file'];if ( $info = $upload->uploadOne($file)) {echo '上传成功' . $info;} else {echo $upload->getError();// 错误写入文件file_put_contents('log.text', $upload->getError());
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号