示例#1
0
 /**
  * @brief Éú³ÉËõÂÔͼ
  * @param string $image_url ͼƬ·¾¶
  * @param int $width ͼƬ¿í¶È
  * @param int $height ͼƬ¸ß¶È
  */
 public static function get($image_url, $width = 100, $height = 100)
 {
     if ($image_url == '') {
         return '';
     }
     $fileExt = IFile::getFileSuffix($image_url);
     $extName = "_{$width}_{$height}";
     $thumbFileName = str_replace('.' . $fileExt, $extName . '.' . $fileExt, $image_url);
     if (is_file(IWeb::$app->getRuntimePath() . $thumbFileName) == false) {
         PhotoUpload::thumb($image_url, $width, $height, "_{$width}_{$height}", IWeb::$app->getRuntimePath() . dirname($image_url));
     }
     return 'runtime/' . IWeb::$app->controller->theme . '/' . $thumbFileName;
 }
示例#2
0
 /**
  * @brief  开始执行上传
  * @return array 包含上传成功信息的数组
  *		$file = array(
  *			 name    如果上传成功,则返回上传后的文件名称,如果失败,则返回客户端名称
  *			 size    上传附件大小
  *           fileSrc 上传文件完整路径
  *			 dir     上传目录
  *			 ininame 上传图片名
  *			 flag    -1:文件类型不允许; -2:文件大小超出限制; 1:上传成功
  *			 ext     上传附件扩展名
  *		);
  */
 public function execute()
 {
     //总的文件上传信息
     $info = array();
     foreach ($_FILES as $field => $file) {
         $fileInfo = array();
         //不存在上传的文件名
         if (!isset($_FILES[$field]['name']) || $_FILES[$field]['name'] == '' || !isset($_FILES[$field]['tmp_name'])) {
             continue;
         }
         //上传控件为数组格式 file[]格式
         if (is_array($_FILES[$field]['name'])) {
             $keys = array_keys($_FILES[$field]['name']);
             foreach ($keys as $key) {
                 if (!isset($_FILES[$field]['name'][$key]) || $_FILES[$field]['name'][$key] == '') {
                     continue;
                 }
                 //获取扩展名
                 $fileext = IFile::getFileType($_FILES[$field]['tmp_name'][$key]);
                 if (is_array($fileext) || $fileext == null) {
                     $fileext = IFile::getFileSuffix($_FILES[$field]['name'][$key]);
                 }
                 /*开始上传文件*/
                 //(1)上传类型不符合
                 if (!in_array($fileext, $this->allowType)) {
                     $fileInfo[$key]['name'] = $_FILES[$field]['name'][$key];
                     $fileInfo[$key]['flag'] = -1;
                 } else {
                     if ($_FILES[$field]['size'][$key] > $this->maxsize) {
                         $fileInfo[$key]['name'] = $_FILES[$field]['name'][$key];
                         $fileInfo[$key]['flag'] = -2;
                     } else {
                         //修改图片状态值
                         $fileInfo[$key]['name'] = ITime::getDateTime('Ymdhis') . mt_rand(100, 999) . '.' . $fileext;
                         $fileInfo[$key]['dir'] = $this->dir;
                         $fileInfo[$key]['size'] = $_FILES[$field]['size'][$key];
                         $fileInfo[$key]['ininame'] = $_FILES[$field]['name'][$key];
                         $fileInfo[$key]['ext'] = $fileext;
                         $fileInfo[$key]['fileSrc'] = $fileInfo[$key]['dir'] . $fileInfo[$key]['name'];
                         if (is_uploaded_file($_FILES[$field]['tmp_name'][$key])) {
                             if (move_uploaded_file($_FILES[$field]['tmp_name'][$key], $this->dir . $fileInfo[$key]['name'])) {
                                 if (file_exists($_FILES[$field]['tmp_name'][$key])) {
                                     IFile::unlink($_FILES[$field]['tmp_name'][$key]);
                                 }
                                 $fileInfo[$key]['flag'] = 1;
                             }
                         }
                     }
                 }
             }
         } else {
             if ($_FILES[$field]['name'] == '' || $_FILES[$field]['tmp_name'] == '') {
                 continue;
             }
             //获取扩展名
             $fileext = IFile::getFileType($_FILES[$field]['tmp_name']);
             if (is_array($fileext) || $fileext == null) {
                 $fileext = IFile::getFileSuffix($_FILES[$field]['name']);
             }
             /*开始上传文件*/
             //(1)上传类型不符合
             if (!in_array($fileext, $this->allowType)) {
                 $fileInfo[0]['name'] = $_FILES[$field]['name'];
                 $fileInfo[0]['flag'] = -1;
             } else {
                 if ($_FILES[$field]['size'] > $this->maxsize) {
                     $fileInfo[0]['name'] = $_FILES[$field]['name'];
                     $fileInfo[0]['flag'] = -2;
                 } else {
                     //修改图片状态值
                     $fileInfo[0]['name'] = ITime::getDateTime('Ymdhis') . mt_rand(100, 999) . '.' . $fileext;
                     $fileInfo[0]['dir'] = $this->dir;
                     $fileInfo[0]['size'] = $_FILES[$field]['size'];
                     $fileInfo[0]['ininame'] = $_FILES[$field]['name'];
                     $fileInfo[0]['ext'] = $fileext;
                     $fileInfo[0]['fileSrc'] = $fileInfo[0]['dir'] . $fileInfo[0]['name'];
                     if (is_uploaded_file($_FILES[$field]['tmp_name'])) {
                         if (move_uploaded_file($_FILES[$field]['tmp_name'], $this->dir . $fileInfo[0]['name'])) {
                             if (file_exists($_FILES[$field]['tmp_name'])) {
                                 IFile::unlink($_FILES[$field]['tmp_name']);
                             }
                             $fileInfo[0]['flag'] = 1;
                         }
                     }
                 }
             }
         }
         $info[$field] = $fileInfo;
     }
     return $info;
 }
示例#3
0
 /**
  * @brief 生成缩略图
  * @param string  $fileName 生成缩略图的目标文件名
  * @param int     $width    缩略图的宽度
  * @param int     $height   缩略图的高度
  * @param string  $ExtName  缩略图文件名附加值
  * @return string 缩略图文件名
  */
 public static function thumb($fileName, $width = 200, $height = 200, $ExtName = '_thumb')
 {
     if (is_file($fileName)) {
         //获取原图信息
         list($imgWidth, $imgHeight) = getImageSize($fileName);
         //计算宽高比例,获取缩略图的宽度和高度
         if ($imgWidth >= $imgHeight) {
             $thumbWidth = $width;
             $thumbHeight = $width / $imgWidth * $imgHeight;
         } else {
             $thumbWidth = $height / $imgHeight * $imgWidth;
             $thumbHeight = $height;
         }
         //生成$fileName文件图片资源
         $thumbRes = self::createImageResource($fileName);
         $thumbBox = imageCreateTrueColor($width, $height);
         //填充补白
         $padColor = imagecolorallocate($thumbBox, 255, 255, 255);
         imagefilledrectangle($thumbBox, 0, 0, $width, $height, $padColor);
         //拷贝图像
         imagecopyresampled($thumbBox, $thumbRes, ($width - $thumbWidth) / 2, ($height - $thumbHeight) / 2, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
         //生成缩略图文件名
         $fileExt = IFile::getFileSuffix($fileName);
         $thumbFileName = str_replace('.' . $fileExt, $ExtName . '.' . $fileExt, $fileName);
         //生成图片文件
         $result = self::createImageFile($thumbBox, $thumbFileName);
         if ($result == true) {
             return $thumbFileName;
         } else {
             return null;
         }
     } else {
         return null;
     }
 }
示例#4
0
 /**
  * @brief  开始执行上传
  * @return array 包含上传成功信息的数组
  *		$file = array(
  *			 name    如果上传成功,则返回上传后的文件名称,如果失败,则返回客户端名称
  *			 size    上传附件大小
  *           fileSrc 上传文件完整路径
  *			 dir     上传目录
  *			 ininame 上传图片名
  *			 flag    -1:上传的文件超出服务器限制; -2:上传的文件超出浏览器限制; -3:上传的文件被部分上传; -4:没有找到上传的文件; -5:上传的文件丢失;
  *                   -6:上传的临时文件没有正确写入; -7:扩展名不允许上传; -8:上传的文件超出了程序的限制; -9:上传的文件中有木马病毒 ; 1:上传成功;
  *			 ext     上传附件扩展名
  *		);
  */
 public function execute()
 {
     //总的文件上传信息
     $info = array();
     foreach ($_FILES as $field => $file) {
         $fileInfo = array();
         //不存在上传的文件名
         if (!isset($_FILES[$field]['name']) || $_FILES[$field]['name'] == '') {
             continue;
         }
         //上传控件为数组格式 file[]格式
         if (is_array($_FILES[$field]['name'])) {
             $keys = array_keys($_FILES[$field]['name']);
             foreach ($keys as $key) {
                 $fileInfo[$key]['name'] = $_FILES[$field]['name'][$key];
                 //上传出现错误
                 if (isset($_FILES[$field]['error'][$key]) && $_FILES[$field]['error'][$key] != 0) {
                     $fileInfo[$key]['flag'] = 0 - $_FILES[$field]['error'][$key];
                 } else {
                     //获取扩展名
                     $fileext = IFile::getFileType($_FILES[$field]['tmp_name'][$key]);
                     if (is_array($fileext) || $fileext == null) {
                         $fileext = IFile::getFileSuffix($_FILES[$field]['name'][$key]);
                     }
                     //图片木马检测
                     if (in_array($fileext, $this->checkType) && !IFilter::checkHex($_FILES[$field]['tmp_name'][$key])) {
                         $fileInfo[$key]['flag'] = -9;
                     } else {
                         /*开始上传文件*/
                         //(1)上传类型不符合
                         if (!in_array($fileext, $this->allowType)) {
                             $fileInfo[$key]['flag'] = -7;
                         } else {
                             if ($_FILES[$field]['size'][$key] > $this->maxsize) {
                                 $fileInfo[$key]['flag'] = -8;
                             } else {
                                 //修改图片状态值
                                 $fileInfo[$key]['name'] = ITime::getDateTime('Ymdhis') . mt_rand(100, 999) . '.' . $fileext;
                                 $fileInfo[$key]['dir'] = $this->dir;
                                 $fileInfo[$key]['size'] = $_FILES[$field]['size'][$key];
                                 $fileInfo[$key]['ininame'] = $_FILES[$field]['name'][$key];
                                 $fileInfo[$key]['ext'] = $fileext;
                                 $fileInfo[$key]['fileSrc'] = $fileInfo[$key]['dir'] . $fileInfo[$key]['name'];
                                 $fileInfo[$key]['flag'] = 1;
                                 if ($this->isForge == false) {
                                     if (is_uploaded_file($_FILES[$field]['tmp_name'][$key])) {
                                         IFile::mkdir($this->dir);
                                         move_uploaded_file($_FILES[$field]['tmp_name'][$key], $this->dir . $fileInfo[$key]['name']);
                                     }
                                 } else {
                                     IFile::xcopy($_FILES[$field]['tmp_name'][$key], $this->dir . $fileInfo[$key]['name']);
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             $fileInfo[0]['name'] = $_FILES[$field]['name'];
             //上传出现错误
             if (isset($_FILES[$field]['error']) && $_FILES[$field]['error'] != 0) {
                 $fileInfo[0]['flag'] = 0 - $_FILES[$field]['error'];
             } else {
                 //获取扩展名
                 $fileext = IFile::getFileType($_FILES[$field]['tmp_name']);
                 if (is_array($fileext) || $fileext == null) {
                     $fileext = IFile::getFileSuffix($_FILES[$field]['name']);
                 }
                 //图片木马检测
                 if (in_array($fileext, $this->checkType) && !IFilter::checkHex($_FILES[$field]['tmp_name'])) {
                     $fileInfo[0]['flag'] = -9;
                 } else {
                     /*开始上传文件*/
                     //(1)上传类型不符合
                     if (!in_array($fileext, $this->allowType)) {
                         $fileInfo[0]['flag'] = -7;
                     } else {
                         if ($_FILES[$field]['size'] > $this->maxsize) {
                             $fileInfo[0]['flag'] = -8;
                         } else {
                             //修改图片状态值
                             $fileInfo[0]['name'] = ITime::getDateTime('YmdHis') . mt_rand(100, 999) . '.' . $fileext;
                             $fileInfo[0]['dir'] = $this->dir;
                             $fileInfo[0]['size'] = $_FILES[$field]['size'];
                             $fileInfo[0]['ininame'] = $_FILES[$field]['name'];
                             $fileInfo[0]['ext'] = $fileext;
                             $fileInfo[0]['fileSrc'] = $fileInfo[0]['dir'] . $fileInfo[0]['name'];
                             $fileInfo[0]['flag'] = 1;
                             if ($this->isForge == false) {
                                 if (is_uploaded_file($_FILES[$field]['tmp_name'])) {
                                     IFile::mkdir($this->dir);
                                     move_uploaded_file($_FILES[$field]['tmp_name'], $this->dir . $fileInfo[0]['name']);
                                 }
                             } else {
                                 IFile::xcopy($_FILES[$field]['tmp_name'], $this->dir . $fileInfo[0]['name']);
                             }
                         }
                     }
                 }
             }
         }
         $info[$field] = $fileInfo;
     }
     return $info;
 }
示例#5
0
 private function checkIterance($file, $photoObj)
 {
     //如果关闭了图片重复提交机制
     if ($this->iterance == false) {
         return null;
     }
     $fileMD5 = null;
     //上传图片的md5值(默认)
     $photoRow = array();
     //图库里照片信息(默认)
     $result = array();
     //结果
     if (is_file($file)) {
         //生成文件md5码
         $fileMD5 = md5_file($file);
     }
     if ($fileMD5 != null) {
         //根据md5值取得图像数据
         $where = "id = '" . $fileMD5 . "'";
         $photoRow = $photoObj->getObj($where);
     }
     //设置了缩略图
     if (isset($photoRow['img'])) {
         if (is_file($photoRow['img'])) {
             $result['img'] = $photoRow['img'];
             $result['flag'] = 1;
             if ($this->thumbWidth && $this->thumbHeight && $this->thumbKey) {
                 foreach ($this->thumbWidth as $thumbWidth_Key => $thumbWidth_Val) {
                     //获取此宽度和高度应有的缩略图名
                     $fileExt = IFile::getFileSuffix($photoRow['img']);
                     $thumbFileName = str_replace('.' . $fileExt, '_' . $this->thumbWidth[$thumbWidth_Key] . '_' . $this->thumbHeight[$thumbWidth_Key] . '.' . $fileExt, $photoRow['img']);
                     if (is_file($thumbFileName)) {
                         $result['thumb'][$this->thumbKey[$thumbWidth_Key]] = $thumbFileName;
                         unset($this->thumbKey[$thumbWidth_Key]);
                     }
                 }
                 //重新生成系统中不存在的此宽高的缩略图
                 foreach ($this->thumbKey as $thumbKey_key => $thumbKey_val) {
                     $thumbExtName = '_' . $this->thumbWidth[$thumbKey_key] . '_' . $this->thumbHeight[$thumbKey_key];
                     $thumbName = $this->thumb($photoRow['img'], $this->thumbWidth[$thumbKey_key], $this->thumbHeight[$thumbKey_key], $thumbExtName);
                     $result['thumb'][$this->thumbKey[$thumbKey_key]] = $thumbName;
                 }
             }
             return $result;
         } else {
             $photoObj->del('id = "' . $photoRow['id'] . '"');
             return null;
         }
     } else {
         return null;
     }
 }