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