飞嗨,欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。(本博已于2015.12.6升级到php7,运行环境php7 php-fpm + nginx1.8.0)

自己写的php单图/多图图片上传类

PHP lf 3538℃ 0评论

工作中,经常需要用到图片上传,所以,趁着有空,就自己写了一个image图片上传类,第一个版本,还不是很完善,甚至可能会有一些bug,希望帮忙指正一下…

下载地址>>>http://pan.baidu.com/s/1kTvGt3T

多图上传

多图上传

单图上传

单图上传

 

pic.php

pic.php

Image图片上传类:

/**
* @link https://blog.feehi.com/wp-content/uploads/
* @author Fee <admin@feehi.com>
* @return 返回一个多维数组,$return['status']为1,上传成功,为2,上传失败;$return['description'],文字提示信息;
status为1时,$return['addr']是一个一维数组,保存了上传成功图片的全路径,可写进数据库
* @since 1.0
*/
error_reporting(0);
class Image{
/**
@var 超全局数组$_FILES;
*/
private $files;
/**
@var 图片上传路径;
*/
private $path;
/**
@var 允许上传的文件类型;可在实例化的时候传一个数组覆盖
*/
private $allowType = array("image/gif","image/pjpeg","image/jpeg","image/png");
/**
@var 接收图片前端input框中的name;
*/
private $name;
/**
@var 图片要保存的名字,默认名字如:2015013030041043.jpg格式,实例化时可传入名字
*/
private $picName = '';

/**
构造方法
@params string $path 图片上传的路径
@params string $picName 可选,指定保存图片的名字
@params array $allowType 可选,指定允许上传的文件类型
*/
public function __construct($path,$picName='',$allowType='')
{
$this -> files = $_FILES;
$this -> path = $path;
if($picName != ''){
$this -> picName = $picName;
}
if($allowType != ''){
$this -> allowType = $allowType;
}
}

public function upload()
{
if(!file_exists($this -> path)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($this -> path, 0700);
}
foreach($this -> files as $k => $v)
{
$this -> name = $k;
}
if(is_array($this -> files[$this->name]['name'])){
$picNum = count($this -> files[$this->name]['name']);//多图上传
for($i=0;$i<$picNum;$i++) { $uploadAddr = $this -> getUploadName($i);
$res = move_uploaded_file($this -> files[$this -> name]["tmp_name"][$i],$uploadAddr);//特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if($res == 1)
{
$addr[] = $uploadAddr;
}else{
$addr[] = 0;
}

}
$count = array_count_values($addr);
if($count[0] == $picNum){
$this -> error(2,"图片上传失败");
}else if($count[0] == 0){
return array('status'=>1,'description'=>'图片上传成功','addr'=>$addr);
}else{
return array('status'=>2,'description'=>'部分图片上传成功','addr'=>$addr);
}
}else{//单图上传
$uploadAddr = $this -> getUploadName('none');
$res = move_uploaded_file($this -> files[$this -> name]["tmp_name"],$uploadAddr);
if($res)
{
$addr[] = $uploadAddr;
return array('status'=>1,'description'=>'图片上传成功','addr'=>$uploadAddr);
}else{
return array('status'=>2,'description'=>'图片上传失败');
}
}

}
private function getUploadName($i)
{
if($i === 'none')
{
$fileType = $this -> files[$this -> name]['type'];

}else{
$fileType = $this -> files[$this -> name]['type'][$i];
}
if(!in_array($fileType,$this -> allowType)){ //检查上传文件是否在允许上传的类型
$this -> error(3,'不允许上传的文件类型');
}

if($fileType == 'image/jpeg'){
$type = '.jpg';
}
if ($fileType == 'image/jpg') {
$type = '.jpg';
}
if ($fileType == 'image/pjpeg') {
$type = '.jpg';
}
if($fileType == 'image/gif'){
$type = '.gif';
}
if($fileType == 'image/png'){
$type = '.png';
}
if($this -> picName == '')
{
$date = date('YmddHis');
if($i === none)
{
$i = '';
}else{
$i = '_'.$i;
}
$uploadAddr = $this -> path.$date.$i.$type;
}else{
$uploadAddr = $this -> path.$this -> picName.$type;
}
return $uploadAddr;

}
private function error($status,$description)
{
return array('status'=>$status,'description'=>$description);
}
}

使用方法:

构造方法中,public function __CONSTRUCT($path,$picName=”,$allowType=”),除$path图片保存目录为必须外,其他可选,$picName指定图片保存后的名字,默认格式单图:2015013030043159.jpg;多图:2015013030043154_1.jpg;$allowType是一个允许图片上传类型的数组,默认允许jpg gif png三种图片格式.

include(“Image.class.php”);
$path = ‘images/';
$image = new Image($path);
$res = $image -> upload();
if($res[‘status’]==1 || $res[‘status’]==2){
echo “上传成功”.’,地址:<br>';
print_r($res[‘addr’]);
}else{
print_r($res);
}

返回信息:

@return 返回一个多维数组,$return[‘status’]为1,上传成功,为2,上传失败;$return[‘description’],文字提示信息;
status为1时,$return[‘addr’]是一个一维数组,保存了上传成功图片的全路径,可写进数据库

转载请注明:飞嗨 » 自己写的php单图/多图图片上传类

喜欢 (2)or分享 (0)

Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /work/php/blog/wp-content/themes/yusi1.0/comments.php on line 17
发表我的评论
取消评论

表情
(24)个小伙伴在吐槽
  1. 大神,抱大腿!
    匿名2015-01-30 14:37 回复
    • 乃们敢笑话小猿猿我!!!
      lf2015-01-30 17:32 回复
      • 哈哈
        lf2015-02-05 22:30 回复
  2. 大神呀 求带么么哒
    匿名2015-01-30 12:21 回复
    • 文哥,你才是大神,求带!
      lf2015-01-30 13:23 回复
粤ICP备15018643号-1