search
Homephp教程php手册PHP image upload class (added thumbnail)

There is a thumbnail function, but it feels incomplete and has some problems. Keep learning and modify it in the future

<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 image upload class (added thumbnail)" >";
echo "<img  src={$c} / alt="PHP image upload class (added thumbnail)" >";

?>

 

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

 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft