服务器之家

服务器之家 > 正文

PHP之图片上传类实例代码(加了缩略图)

时间:2021-01-30 18:19     来源/作者: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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<form action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post" ><input type="text" name="name" /><input type="file" name="file" /><input type="submit" name='submit' value="提交" ></form>
 
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/6/28
 * Time: 21:04
 */
 
class upload{
   protected $fileMine;//文件上传类型
   protected $filepath;//文件上传路径
   protected $filemax;//文件上传大小
   protected $fileExt;//文件上传格式
   protected $filename;//文件名
   protected $fileerror;//文件出错设置
   protected $fileflag;//文件检测
   protected $fileinfo; //FILES
   protected $ext; //文件扩展
   protected $path;
 
  //文件上传
  public function __construct($filename="file",$filemax=20000000,$filepath="./Uploads",$fileflag=true,$fileExt=array('jpg','exe'),$fileMine=array('image/jpeg'))
  {
    $this->filename=$filename;
    $this->fileinfo=$_FILES[$this->filename];
    $this->filemax=$filemax;
    $this->filepath=$filepath;
    $this->fileflag=$fileflag;
    $this->fileExt=$fileExt;
    $this->fileMine=$fileMine;
 
    //var_dump($this->filename);
 
  }
 
  //错误判断
  public function UpError(){
 
      if($this->fileinfo['error']>0){
        switch($this->fileinfo['error'])
        {
          case 1:
          $this->fileerror="上传文件大小超过服务器允许上传的最大值,php.ini中设置upload_max_filesize选项限制的值 ";
            break;
          case 2:
            $this->fileerror="上传文件大小超过HTML表单中隐藏域MAX_FILE_SIZE选项指定的值";
            break;
          case 3:
            $this->fileerror="文件部分被上传";
            break;
          case 4:
            $this->fileerror="没有选择上传文件";
            break;
          case 5:
            $this->fileerror="未找到临时目录";
            break;
          case 6:
            $this->fileerror="文件写入失败";
            break;
          case 7:
            $this->fileerror="php文件上传扩展没有打开 ";
            break;
          case 8:
            $this->fileerror="";
            break;
 
        }
        return false;
      }
      return true;
 
  }
 
  //检测文件类型
  public function UpMine(){
    if(!in_array($this->fileinfo['type'],$this->fileMine)) {
      $this->error="文件上传类型不对";
      return false;
    }
    return true;
 
  }
  //检测文件格式
  public function UpExt(){
    $this->ext=pathinfo($this->fileinfo['name'],PATHINFO_EXTENSION);
    //var_dump($ext);
    if(!in_array($this->ext,$this->fileExt)){
      $this->fileerror="文件格式不对";
      return false;
    }
    return true;
  }
  //检测文件路径
  public function UpPath(){
    if(!file_exists($this->filepath)){
      mkdir($this->filepath,0777,true);
    }
  }
  //检测文件大小
  public function UpSize(){
    $max=$this->fileinfo['size'];
    if($max>$this->filemax){
      $this->fileerror="文件过大";
      return false;
    }
    return true;
  }
  //检测文件是否HTTP
  public function UpPost(){
    if(!is_uploaded_file($this->fileinfo['tmp_name'])){
      $this->fileerror="恶意上偿还";
      return false;
    }
    return true;
  }
  //文件名防止重复
  public function Upname(){
    return md5(uniqid(microtime(true),true));
  }
 
  //图片缩略图
  public function Smallimg($x=100,$y=100){
    $imgAtt=getimagesize($this->path);
    //图像宽,高,类型
    $imgWidth=$imgAtt[0];
    $imgHeight=$imgAtt[1];
    $imgext=$imgAtt[2];
    //等比列缩放
 
    if(($x/$imgWidth)>($y/$imgHeight)){
      $bl=$y/$imgHeight;
    }else{
      $bl=$x/$imgWidth;
    }
    $x=floor($imgWidth*$bl); //缩放后
    $y=floor($imgHeight*$bl);
    $images=imagecreatetruecolor($x,$y);
    $big=imagecreatefromjpeg($this->path);
    imagecopyresized($images,$big,0,0,0,0,$x,$y,$imgWidth,$imgWidth);
    switch($imgext){
      case 1:
        $imageout=imagecreatefromgif($this->path);
        break;
      case 2:
        $imageout=imagecreatefromjpeg($this->path);
        break;
      case 3:
        $imageout=imagecreatefromgif($this->path);
        break;
    }
    $im=imagejpeg($images,$this->path);
 
 
 
 
  }
 
  //文件双传
  public function uploads()
  {
    if($this->UpError()&&$this->UpMine()&&$this->UpExt()&&$this->UpSize()&&$this->UpPost()){
      $this->UpPath();
      $names=$this->Upname();
      $this->path=$this->filepath.'/'. $names.'.'.$this->ext;
 
      if(move_uploaded_file($this->fileinfo['tmp_name'], $this->path)){
        return $this->path;
      }else{
        $this->fileerror="上传失败";
      }
    }else{
      exit("<b>".$this->fileerror."</b>");
    }
  }
 
 
}
 
 
?>
?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  header("content-type:imagejpeg");
header("Content-type:text/html;charset=utf-8");
 require 'list.php';
 $u=new upload();
 $a=$u->uploads();
 
 $c=$u->Smallimg();
echo "<img src={$a} />";
echo "<img src={$c} />";
 
?>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
</head>
<body>
  <form action="ce.php" enctype="multipart/form-data" method="post" >
  <input type="text" name="name" /><input type="file" name="file" />
  <input type="submit" name='submit' value="提交" >
  </form>
</body>
</html>

以上这篇PHP之图片上传类实例代码(加了缩略图)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
返回顶部