首页 php教程 php手册 PHP之图片上传类(加了缩略图)

PHP之图片上传类(加了缩略图)

Jul 06, 2016 pm 01:28 PM

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

<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} / alt="PHP之图片上传类(加了缩略图)" >";
echo "<img  src={$c} / alt="PHP之图片上传类(加了缩略图)" >";

?>
登录后复制

  

<!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>
登录后复制

  

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)