Home  >  Article  >  Backend Development  >  PHP implements file upload, php file upload plug-in, php multi-file upload plug-in, php ftp upload file

PHP implements file upload, php file upload plug-in, php multi-file upload plug-in, php ftp upload file

WBOY
WBOYOriginal
2016-07-29 08:55:011571browse

The tools are as follows:

maxSize = $maxSize;
			$this->allowMime = $allowMime;
			$this->allowExt = $allowExt;
			$this->uploadPath = $uploadPath;
			$this->imgFlag = $imgFlag;
			$this->init();
		}

		private function init() {
			$this->fileInfo = array();
			foreach ($_FILES as $k => $v) {
				$this->fileInfo = $v;
			}
			
			if (!empty($this->fileInfo)) {
				$this->ext = strtolower(pathinfo($this->fileInfo['name'], PATHINFO_EXTENSION));
			}
			
		}

		/**
		* 上传文件
		* @return 如果上传失败那么就返回false,如果上传成功,那么返回路径
		*/
		public function uploadFile() {
			if (!$this->checkError() || !$this->checkSize() || !$this->checkHTTPPost() || !$this->checkTrueImg()) {
				return false;
			}
			if (!empty($this->allowExt) && !$this->checkExt()) {
				return false;
			}
			if (!empty($this->allowMime) && !$this->checkMime()) {
				return false;
			}
			$this->checkUploadPath();
			$this->uniName = $this->getUniName();
			$this->destination = $this->uploadPath . '/' . $this->uniName . '.' . $this->ext;
			if (!@move_uploaded_file($this->fileInfo['tmp_name'], $this->destination)) {
				return false;
			}
			return $this->destination;
		}

		/**
		* 获取错误信息
		*/
		public function getError() {
			return $this->error;
		}

		/**
		* 检测上传文件是否出错
		* @return boolean
		*/
		private function checkError() {

			if (empty($this->fileInfo)) {
				$this->error = '文件上传出错';
				$this->code = 1001;
				return false;
			}
			
			if ($this->fileInfo['error'] == 0) {
				return true;
			}

			switch ($this->fileInfo['error']) {
				case 1:
					$this->error = '超过了PHP配置文件中upload_max_filesize选项的值';
					$this->code = 1002;
					break;
				case 2:
					$this->error = '超过了表单中MAX_FILE_SIZE设置的值';
					$this->code = 1003;
					break;
				case 3:
					$this->error = '文件部分被上传';
					$this->code = 1004;
					break;
				case 4:
					$this->error = '没有选择上传文件';
					$this->code = 1005;
					break;
				case 6:
					$this->error = '没有找到临时目录';
					$this->code = 1006;
					break;
				case 7:
					$this->error = '文件不可写';
					$this->code = 1007;
					break;
				case 8:
					$this->error = '由于PHP的扩展程序中断文件上传';
					$this->code = 1008;
					break;
			}
			return false;
		}

		/**
		* 检测上传文件的大小
		* @return boolean
		*/
		private function checkSize() {
			if ($this->fileInfo['size'] > $this->maxSize) {
				$this->error = '上传文件过大';
				$this->code = 1009;
				return false;
			}
			return true;
		}

		/**
		* 检测扩展名
		* @return boolean
		*/
		private function checkExt() {
			if (!in_array($this->ext, $this->allowExt)) {
				$this->error = '不允许的扩展名';
				$this->code = 1010;
				return false;
			}
			return true;
		}

		/**
		* 检测文件类型
		* @return boolean
		*/
		private function allowMime() {
			if (!in_array($this->fileInfo['type'], $this->allowMime)) {
				$this->error = '不允许的文件类型';
				$this->code = 1011;
				return false;
			}
			return true;
		}

		/**
		* 检测是否是真实图片
		* @return boolean
		*/
		private function checkTrueImg() {
			if ($this->imgFlag) {
				if (!@getimagesize($this->fileInfo['tmp_name'])) {
					$this->error = '不是真实图片';
					$this->code = 1012;
					return false;
				}
				return true;
			}
			return true;
		}

		/**
		* 检测是否通过HTTP POST方式上传的
		* @return boolean
		*/
		private function checkHTTPPost() {
			if (!is_uploaded_file($this->fileInfo['tmp_name'])) {
				$this->error = '文件不是通过HTTP POST方式上传的';
				$this->code = 1013;
				return false;
			}
			return true;
		}

		/**
		* 检测目录不存在,则创建
		*/
		private function checkUploadPath() {
			if (!file_exists($this->uploadPath)) {
				mkdir($this->uploadPath, 0777, true);
			}
		}

		/**
		* 产生唯一字符串
		* @return string
		*/
		private function getUniName() {
			return md5(uniqid(microtime(true), true));
		}


	}
 ?>

The usage method is as follows:




	
	文件上传

上传:

uploadFile();
	if (!($destination === false)) {
		echo "$destination";
	}
	echo $uploadHelper->getError();
 ?>

The above introduces the implementation of file upload in PHP, including file upload and PHP content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn