zoukankan      html  css  js  c++  java
  • PHP之图片上传类(加了缩略图)

    有缩略图功能 但是 感觉不全面,而且有点问题,继续学习,将来以后修改下

    <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>");
            }
        }
    
    
    
    
    
    }
    
    
    
    
    ?>
    

      

    <?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} />";
    
    ?>
    

      

    <!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>
    

      

  • 相关阅读:
    @synthesize 有什么好处?
    javascript isNaN
    nodejs 与 mysql联接
    SQL SERVER 2008 架构
    sql server 2008 索引
    sql server 2008 (3)
    sql server 2008 (1)(2)
    c# 中的 Trim
    无法将该规则转化为等效的IIS格式,因为有不支持的标记:E
    如何解决近期微赞或微擎有些模块提示不是官方安装的解决办法
  • 原文地址:https://www.cnblogs.com/mengluo/p/5628282.html
Copyright © 2011-2022 走看看