标签:
<?php
class Upload {
private $error;
private $destination;
private $fileInfo;
private $uploadDir;
private $maxFileSize;
private $allowExt;
private $checkImage;
function __construct($fileInfo, $uploadDir = ‘./uploads‘, $maxFileSize = 1024 * 1024 * 1,
$allowExt = array(‘jpg‘, ‘gif‘, ‘png‘, ‘bmp‘, ‘jpeg‘),
$checkImage = true, $allowMime = array(‘image/gif‘, ‘image/jpeg‘, ‘image/png‘)) {
$this->fileInfo = $fileInfo;
$this->uploadDir = $uploadDir;
$this->maxFileSize = $maxFileSize;
$this->allowExt = $allowExt;
$this->checkImage = $checkImage;
$this->allowMime = $allowMime;
}
/***
* 处理上传文件
* @return string
*/
public function uploadFile() {
if (!$this->fileInfo) {
$this->error = ‘文件信息不存在‘;
return $this->error;
}
if ($this->checkError() && $this->checkImageType() && $this->checkMaxFileSize() && $this->checkAllowExt()
&& $this->checkPostUpload() && $this->checkMime()
) {
//判断文件夹是否存在
$this->checkUploadDir();
//生成唯一文件名
$destination = $this->uploadDir . ‘/‘ . $this->buildUniqueId() . ‘.‘ . $this->getExt();
if (@move_uploaded_file($this->fileInfo[‘tmp_name‘], $destination)) {
$this->destination = $destination;
return $this->destination;
} else {
$this->error = ‘移动上传文件失败‘;
}
return $this->error;
}
return $this->error;
}
private function checkError() {
if ($this->fileInfo[‘error‘] == UPLOAD_ERR_OK) {
return true;
}
$this->error = ‘上传出现错误,错误代码:‘ . $this->fileInfo[‘error‘];
return false;
}
private function buildUniqueId() {
return md5(uniqid(microtime(true), true));
}
private function checkUploadDir() {
if (!file_exists($this->uploadDir)) {
mkdir($this->uploadDir, 0777, true);
chmod($this->uploadDir, 0777);
}
}
private function checkAllowExt() {
if (in_array($this->getExt(), $this->allowExt)) {
return true;
}
$this->error = ‘该类型的文件不能上传‘;
return false;
}
private function checkMaxFileSize() {
if ($this->maxFileSize > $this->fileInfo[‘size‘]) {
return true;
}
$this->error = ‘上传文件的大小已超过限额‘;
return false;
}
private function checkImageType() {
if ($this->checkImage) {
if ($this->checkAllowExt() && getimagesize($this->fileInfo[‘tmp_name‘])) {
return true;
}
$this->error = ‘上传的不是图片‘;
return false;
}
return true;
}
private function checkPostUpload() {
if (is_uploaded_file($this->fileInfo[‘tmp_name‘])) {
return true;
}
$this->error = ‘不是Post上传的文件‘;
return false;
}
private function checkMime() {
if (in_array($this->getMime(), $this->allowMime)) {
return true;
}
$this->error = ‘Mime类型不正确‘;
return false;
}
private function getMime() {
if ($imageInfo = getimagesize($this->fileInfo[‘tmp_name‘])) {
return $imageInfo[‘mime‘];
}
return false;
}
private function getExt() {
return strtolower(pathinfo($this->fileInfo[‘name‘], PATHINFO_EXTENSION));
}
}
标签:
原文地址:http://www.cnblogs.com/99388514/p/5541271.html