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 = "上传" > |
虽功未成,亦未敢藏私,众侠诸神通尽录于此,竟成一笈,名葵花宝典,以飨后世。
邮箱:steven9801@163.com
QQ: 48039387
邮箱:steven9801@163.com
QQ: 48039387