PHP中实现图片上传的类库

PHP中实现图片上传的类库

实现php中图片上传的类. 在php项目开发中,图片上传是很重要的一部分. 很多时候我们对php文件上传比较头疼,因为涉及到图片压缩,图片加水印,获取缩略图,图片格式检测等问题.

这个类基本上是封装了常用的PHP图片处理函数,可以实现图片的缩略图获取和上次功能. 如果加上之前发布的图片加水印功能的话,就更方便了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* 
* 作者: 雪狐博客 
* 类用途: PHP图片上传 
*/
class upphoto{  
public $previewsize=0.125  ;   //预览图片比例  
public $preview=0;   //是否生成预览,是为1,否为0  
    public $datetime;   //随机数  
    public $ph_name;   //上传图片文件名  
    public $ph_tmp_name;    //图片临时文件名  
    public $ph_path="../userimg/";    //上传文件存放路径  
public $ph_type;   //图片类型  
    public $ph_size;   //图片大小  
    public $imgsize;   //上传图片尺寸,用于判断显示比例  
    public $al_ph_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');    //允许上传图片类型  
    public $al_ph_size=1000000;   //允许上传文件大小  
  function __construct(){  
    $this->set_datatime();  
  }  
  function set_datatime(){  
   $this->datetime=date("YmdHis");  
  }  
   //获取文件类型  
  function get_ph_type($phtype){  
     $this->ph_type=$phtype;  
  }  
  //获取文件大小  
  function get_ph_size($phsize){  
     $this->ph_size=$phsize."<br>";  
  }  
  //获取上传临时文件名  
  function get_ph_tmpname($tmp_name){  
    $this->ph_tmp_name=$tmp_name;  
    $this->imgsize=getimagesize($tmp_name);  
  }  
  //获取原文件名  
  function get_ph_name($phname){  
    $this->ph_name=$this->ph_path.$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置  
//$this->ph_name=$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置  
return $this->ph_name;  
  }  
//判断上传文件存放目录  
  function check_path(){  
    if(!file_exists($this->ph_path)){  
     mkdir($this->ph_path);  
    }  
  }  
  //判断上传文件是否超过允许大小  
  function check_size(){  
    if($this->ph_size>$this->al_ph_size){  
     $this->showerror("上传图片超过2000KB");  
    }  
  }  
  //判断文件类型  
  function check_type(){  
   if(!in_array($this->ph_type,$this->al_ph_type)){  
         $this->showerror("上传图片类型错误");  
   }  
  }  
  //上传图片  
   function up_photo(){  
   if(!move_uploaded_file($this->ph_tmp_name,$this->ph_name)){  
    $this->showerror("上传文件出错");  
   }  
  }  
  //图片预览  
   function showphoto(){  
      if($this->preview==1){  
      if($this->imgsize[0]>2000){  
        $this->imgsize[0]=$this->imgsize[0]*$this->previewsize;  
             $this->imgsize[1]=$this->imgsize[1]*$this->previewsize;  
      }  
         echo("<img src=\"{$this->ph_name}\" width=\"{$this->imgsize['0']}\" height=\"{$this->imgsize['1']}\">");  
     }  
   }  
  //错误提示  
  function showerror($errorstr){  
    echo "<script language=javascript>alert('$errorstr');location='javascript:history.go(-1);';</script>";  
   exit();  
  }  
  function save(){  
   $this->check_path();  
   $this->check_size();  
   $this->check_type();  
   $this->up_photo();  
   $this->showphoto();  
  }  
}

使用方法:

1
2
3
4
5
6
7
8
9
10
11
//类的实例化: 
include("uppoo.php");//类的文件名是upoop.php 
$up=new upphoto; 
$submit = $_POST['submit']; 
if($submit == "上传"){ 
  $up->get_ph_tmpname($_FILES['photo']['tmp_name']); 
  $up->get_ph_type($_FILES['photo']['type']); 
  $up->get_ph_size($_FILES['photo']['size']); 
  $up->get_ph_name($_FILES['photo']['name']); 
  $up->save(); 
}
1
2
3
4
//上传图片的HTML: 
<form action="upphoto.php?action=act" method="post" enctype="multipart/form-data"
图片来源:<input type="file" name="photo"
<input type="submit" name="submit" value="上传">
posted @ 2013-03-22 10:02  火腿骑士  阅读(257)  评论(0编辑  收藏  举报