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 = "上传" >

你可能感兴趣的:(图片上传)