一个自创的图片上传类miniUpload

upload-logo-01
由于接触PHP的一年以内吧,基本上都是写过程式的代码,框架从没接触过,当遇到文件上传功能时,总是松散的写段过程式代码应付,导致代码的规范性很差,所以决定自己写一个文件上传小类。

[cc lang=”php” theme=”twitlight” width=”100%” height=”700″ lines=”40″ noborder=”true”]
fileName[‘size’] > $this->fileMaxSize){
echo’‘;
exit();
}
//检测类型

if(!in_array($this->fileName[‘type’],$this->fileType)){
//提示没有此种类型
echo’‘;
}

}
//处理上传
public function finishUpload(){
$this->fileName[‘name’] = $this->createRandName().”.jpg”;//图片的新名称(带扩展名)
$filename = $this->filePath.”/”.$this->fileName[‘name’];//制作图片存放的文件路径
$dbFileName = $this->fileName[‘name’]; //需要存放到数据库中的图片
if(!move_uploaded_file($this->fileName[‘tmp_name’], $filename)){
echo’‘; exit();
}
if($this->boolWH){
$this->resize_image($filename, $filename, $this->fileWidth, $this->fileHeight);
}
return $dbFileName;
}
//为图片生成随机名称
public function createRandName(){
$randStr = ”;
$pattern=’1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ’;
for($i=0 ; $i<20; $i++){ $randStr .= $pattern[rand(0, 51)]; } return $randStr; } /******************************************************************/ /** * 改变图片的宽高 * @param string $img_src 原图片的存放地址或url * @param string $new_img_path 新图片的存放地址 * @param int $new_width 新图片的宽度 * @param int $new_height 新图片的高度 * @return bool 成功true, 失败false */ public function resize_image($img_src, $new_img_path, $new_width, $new_height) { $img_info = @getimagesize($img_src); if (!$img_info || $new_width < 1 || $new_height < 1 || empty($new_img_path)) { return false; } if (strpos($img_info['mime'], 'jpeg') !== false) { $pic_obj = imagecreatefromjpeg($img_src); } else if (strpos($img_info['mime'], 'gif') !== false) { $pic_obj = imagecreatefromgif($img_src); } else if (strpos($img_info['mime'], 'png') !== false) { $pic_obj = imagecreatefrompng($img_src); } else { return false; } $pic_width = imagesx($pic_obj); $pic_height = imagesy($pic_obj); if (function_exists("imagecopyresampled")) { $new_img = imagecreatetruecolor($new_width,$new_height); imagecopyresampled($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height); } else { $new_img = imagecreate($new_width, $new_height); imagecopyresized($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height); } if (preg_match('~.([^.]+)$~', $new_img_path, $match)) { $new_type = strtolower($match[1]); switch ($new_type) { case 'jpg': imagejpeg($new_img, $new_img_path); break; case 'gif': imagegif($new_img, $new_img_path); break; case 'png': imagepng($new_img, $new_img_path); break; default: imagejpeg($new_img, $new_img_path); } } else { imagejpeg($new_img, $new_img_path); } imagedestroy($pic_obj); imagedestroy($new_img); return true; } } [/cc] 使用方法: [cc lang="php" theme="twitlight" width="100%" height="700" lines="40" noborder="true"] require 'miniUpload.class.php'; $uploadImg = new miniUpload(); $uploadImg->fileName = &$_FILES[‘fileName’];
//file path
$uploadImg->ImgPath = ‘upload/img’;
//check name
$uploadImg->ImgType = array(‘image/jpg’,’image/jpeg’, ‘image/gif’); $uploadImg->checkImg();
//完成上传
$file_path = $uploadImg->finishUpload();
[/cc]

后来把这个小类放到了我的github上,传送门地址:https://github.com/xuwenzhi/miniUpload

一个自创的图片上传类miniUpload
Tags:     

发表评论

电子邮件地址不会被公开。 必填项已用*标注