PHP 파일 업로드 클래스 Sharing_php 예
이 글은 주로 모든 사람을 위한 PHP 파일 업로드 클래스의 관련 코드를 공유하며, 관심 있는 친구들은 이를 참고할 수 있습니다.
코드는 다음과 같습니다:
<?php $upload = new UpLoad(); $upload->uploadFile('fm'); /*打印错误信息*/ // var_dump($upload->errorNumber); // var_dump($upload->errorInfo); class UpLoad{ //文件上传路径 protected $path = 'upload/'; //允许文件上传的后缀 protected $allowSuffix = ['jpg','jpeg', 'gif','wbmp','png']; //mime类型 protected $allowMime =['image/jpg','image/jpeg', 'image/gif','image/wbmp','image/png']; //允许上传的大小 protected $maxSize = 2000000; //是否启用默认的前缀 protected $isRandName =true ; //文件的前缀 protected $prefix = 'up_'; //错误号和错误信息 protected $errorNumber; protected $errorInfo; //文件的信息 //文件名 protected $oldName; //文件的后缀 protected $suffix; //文件的大小 protected $size; //文件的mime protected $mime; //文件的临时文件的路径 protected $tmpName; //文件新名字 protected $newName; //构造方法 //因为成员属性比较多就用数组来显示 public function __construct($arr =[]){ foreach ($arr as $key=>$value){ $this->setOption($key,$value); } } //判断$key是不是我的成员属性,如果是就设置 protected function setOption($key,$value){ //得到所有的成员属性 $keys = array_keys(get_class_vars(__CLASS__)); if(in_array($key, $keys)){ $this->$key = $value; } } //文件上传函数 //key 就是input框中的name属性值 public function uploadFile($key){ //判断有没有设置路径 path if(empty($this->path)){ $this->setOption('errorNumber',-1 ); return false; } //判断该路径是否存在是否可写 if (!$this->check()){ $this->setOption('errorNumber', -2); return false; } //判断$_FILES里面的error信息是否为0,如果为0则说明文件信息在服务器端可以直接获取,提取信息保存到成员属性中 $error = $_FILES[$key]['error']; if($error){ $this->setOption('errorNumber', -3); return false; }else { //提取文件相关信息并且保存到成员属性中 $this->getFileInfo($key); } //判断文件的大小、mime、后缀是否符合 if(!$this->checkSize() || !$this->checkMime()|| !$this->checkSuffix()){ return false; } //得到新的文件名字 $this->newName = $this->createNewName(); //判断是否是上传文件,并且是移动上传文件 if(is_uploaded_file($this->tmpName)){ if(move_uploaded_file($this->tmpName, $this->path.$this->newName)){ return $this->path.$this->newName; }else { $this->setOption('errorNumber', -7); return false; } }else{ $this->setOption('errorNumber', -6); return false; } } //检测文件夹是否存在,是否可写 protected function check(){ //文件夹不存在或者不是目录。创建文件夹 if(!file_exists($this->path) ||!is_dir($this->path)){ return mkdir($this->path,0777,true); } //判断文件是否可写 if(!is_writeable($this->path)){ return chmod($this->path, 0777); } return true; } //根据key得到文件信息 protected function getFileInfo($key){ //得到文件的名字 $this->oldName = $_FILES[$key]['name']; //得到文件的mime类型 $this->mime = $_FILES[$key]['type']; //得到文件的临时文件 $this->tmpName = $_FILES[$key]['tmp_name']; //得到文件大小 $this->size = $_FILES[$key]['size']; //得到文件后缀 $this->suffix = pathinfo($this->oldName)['extension']; } //判断文件大小 protected function checkSize(){ if($this->size > $this->maxSize){ $this->setOption('errorNumber', -3); return false; } return true; } //判断mime类型 protected function checkMime(){ if(!in_array($this->mime, $this->allowMime)){ $this->setOption('errorNumber', -4); return false; } return true; } //判断后缀 protected function checkSuffix(){ if(!in_array($this->suffix, $this->allowSuffix)){ $this->setOption('errorNumber', -5); return false; } return true; } //创建新名字 protected function createNewName(){ if($this->isRandName){ $name = $this->prefix.uniqid().'.'.$this->suffix; }else { $name = $this->prefix.$this->oldName; } return $name; } public function __get($name){ if($name == 'errorNumber'){ return $this->errorNumber; }elseif ($name == 'errorInfo'){ return $this->getErrorInfo(); } } protected function getErrorInfo(){ switch ($this->errorNumber){ case -1: $str = '文件路径没有设置'; break; case -2: $str = '文件不是目录或者不可写'; break; case -3: $str = '文件超过指定大小'; break; case -4: $str = 'mime类型不符合'; break; case -5: $str = '文件后缀不符合'; break; case -6: $str = '不是上传文件'; break; case -7: $str = '移动失败'; break; case 1: $str = '超出ini设置大小'; break; case 2: $str = '超出html表单大小'; break; case 3: $str = '文章只有部分上传'; break; case 4: $str = '没有文件上传'; break; case 6: $str = '找不到临时文件'; break; case 7: $str = '文件写入失败'; break; } return $str; } }
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>文件上传</title> </head> <body> <form action="UpLoad.php" method="post" enctype="multipart/form-data" > <input type="file" name="fm" value=""><br> <input type="submit" value="上传文件" /><br> </form> </body> </html>
참고: 입력 이름은 업로드 클래스의 uploadFile에 전달된 값과 일치해야 합니다!
관련 권장 사항:
php파일 업로드 클래스및 많은 PHP 패키지 파일 업로드 클래스Share
PHP에는 많은 패키지가 있습니다. 파일 업로드 수업예제와 사용법에 대한 자세한 설명
위 내용은 PHP 파일 업로드 클래스 Sharing_php 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.
