• PHP图片上传程序(完整版)


    <!DOCTYPE html>
    <?php
    /* * **************************************************************************** 
    
      参数说明:
      $max_file_size  : 上传文件大小限制, 单位BYTE
      $destination_folder : 上传文件路径
      $watermark   : 是否附加水印(1为加水印,其他为不加水印);
    
      使用说明:
      1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
      2. 将extension_dir =改为你的php_gd2.dll所在目录;
     * **************************************************************************** */
    
    //上传文件类型列表  
    $uptypes = array(
        'image/jpg',
        'image/jpeg',
        'image/png',
        'image/pjpeg',
        'image/gif',
        'image/bmp',
        'image/x-png'
    );
    
    $max_file_size = 2000000;     //上传文件大小限制, 单位BYTE  
    $destination_folder = "images/"; //上传文件路径  
    $watermark = 1;      //是否附加水印(1为加水印,其他为不加水印);  
    $watertype = 1;      //水印类型(1为文字,2为图片)  
    $waterposition = 1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);  
    $waterstring = "http://www.xplore.cn/";  //水印字符串  
    $waterimg = "xplore.gif";    //水印图片  
    $imgpreview = 1;      //是否生成预览图(1为生成,其他为不生成);  
    $imgpreviewsize = 1 / 2;    //缩略图比例  
    ?>  
    <html>  
        <head>  
            <meta charset="UTF-8">
            <title>ZwelL图片上传程序</title>  
            <style type="text/css">  
                <!--  
                body  
                {  
                    font-size: 9pt;  
                }  
                input  
                {  
                    background-color: #66CCFF;  
                    border: 1px inset #CCCCCC;  
                }  
                -->  
            </style>  
        </head>  
    
        <body>  
            <form enctype="multipart/form-data" method="post" name="upform">  
                上传文件:  
                <input name="upfile" type="file">  
                <input type="submit" value="上传"><br>  
                允许上传的文件类型为:<?= implode(', ', $uptypes) ?>  
            </form>  
    
            <?php
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                if (!is_uploaded_file($_FILES["upfile"][tmp_name])) {
                //是否存在文件  
                    echo "图片不存在!";
                    exit;
                }
    
                $file = $_FILES["upfile"];
                if ($max_file_size < $file["size"]) {
                //检查文件大小  
                    echo "文件太大!";
                    exit;
                }
    
                if (!in_array($file["type"], $uptypes)) {
                //检查文件类型  
                    echo "文件类型不符!" . $file["type"];
                    exit;
                }
    
                if (!file_exists($destination_folder)) {
                    mkdir($destination_folder);
                }
    
                $filename = $file["tmp_name"];
                $image_size = getimagesize($filename);
                $pinfo = pathinfo($file["name"]);
                $ftype = $pinfo['extension'];
                $destination = $destination_folder . time() . "." . $ftype;
                if (file_exists($destination) && $overwrite != true) {
                    echo "同名文件已经存在了";
                    exit;
                }
    
                if (!move_uploaded_file($filename, $destination)) {
                    echo "移动文件出错";
                    exit;
                }
    
                $pinfo = pathinfo($destination);
                $fname = $pinfo[basename];
                echo " <font color=red>已经成功上传</font><br>文件名:  <font color=blue>" . $destination_folder . $fname . "</font><br>";
                echo " 宽度:" . $image_size[0];
                echo " 长度:" . $image_size[1];
                echo "<br> 大小:" . $file["size"] . " bytes";
    
                if ($watermark == 1) {
                    $iinfo = getimagesize($destination, $iinfo);
                    $nimage = imagecreatetruecolor($image_size[0], $image_size[1]);
                    $white = imagecolorallocate($nimage, 255, 255, 255);
                    $black = imagecolorallocate($nimage, 0, 0, 0);
                    $red = imagecolorallocate($nimage, 255, 0, 0);
                    imagefill($nimage, 0, 0, $white);
                    switch ($iinfo[2]) {
                        case 1:
                            $simage = imagecreatefromgif($destination);
                            break;
                        case 2:
                            $simage = imagecreatefromjpeg($destination);
                            break;
                        case 3:
                            $simage = imagecreatefrompng($destination);
                            break;
                        case 6:
                            $simage = imagecreatefromwbmp($destination);
                            break;
                        default:
                            die("不支持的文件类型");
                            exit;
                    }
    
                    imagecopy($nimage, $simage, 0, 0, 0, 0, $image_size[0], $image_size[1]);
                    imagefilledrectangle($nimage, 1, $image_size[1] - 15, 80, $image_size[1], $white);
    
                    switch ($watertype) {
                        case 1:   //加水印字符串  
                            imagestring($nimage, 2, 3, $image_size[1] - 15, $waterstring, $black);
                            break;
                        case 2:   //加水印图片  
                            $simage1 = imagecreatefromgif("xplore.gif");
                            imagecopy($nimage, $simage1, 0, 0, 0, 0, 85, 15);
                            imagedestroy($simage1);
                            break;
                    }
    
                    switch ($iinfo[2]) {
                        case 1:
                            //imagegif($nimage, $destination);  
                            imagejpeg($nimage, $destination);
                            break;
                        case 2:
                            imagejpeg($nimage, $destination);
                            break;
                        case 3:
                            imagepng($nimage, $destination);
                            break;
                        case 6:
                            imagewbmp($nimage, $destination);
                            //imagejpeg($nimage, $destination);  
                            break;
                    }
    
                    //覆盖原上传文件  
                    imagedestroy($nimage);
                    imagedestroy($simage);
                }
    
                if ($imgpreview == 1) {
                    echo "<br>图片预览:<br>";
                    echo "<img src="" . $destination . "" width=" . ($image_size[0] * $imgpreviewsize) . " height=" . ($image_size[1] * $imgpreviewsize);
                    echo " alt="图片预览:
    文件名:" . $destination . "
    上传时间:">";
                }
            }
            ?>  
        </body>  
    </html>  
  • 相关阅读:
    LDAP概念及原理
    基于Kerberos+Ldap复合认证的大数据权限
    架构师需要知道的20个英文缩写
    Alluxio集群搭建并整合CDH(MR/Hive/Spark)
    编译Alluxio源码适配CDH5.16.1
    Hive全库数据迁移方案
    基于LDAP认证的大数据权限解决方案
    基于Kerberos认证的大数据权限解决方案
    普通用户fork问题 fork: retry: No child processes
    (二)数据预处理
  • 原文地址:https://www.cnblogs.com/qixin622/p/3477620.html
Copyright © 2020-2023  润新知