PHP image upload code

  • 2020-10-31 21:41:57
  • OfStack

Instructions for use:
1. Before the "extension= php_ES5en2.dll "line in PHP. INI file; Get rid of the number, because we're going to use the GD library;
2. Change extension_dir = to your php_ES12en2.dll directory;

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
/******************************************************************************

 Parameters that :
$max_file_size  :  Upload file size limit ,  unit BYTE
$destination_folder :  Upload file path 
$watermark   :  Whether to attach watermark (1 For watermarking , Others do not add watermark );

******************************************************************************/

// List of uploaded file types 
$uptypes=array(
    'image/jpg',
    'image/jpeg',
    'image/png',
    'image/pjpeg',
    'image/gif',
    'image/bmp',
    'image/x-png'
);

$max_file_size=2000000;     // Upload file size limit ,  unit BYTE
$destination_folder="uploadimg/"; // Upload file path 
$watermark=1;      // Whether to attach watermark (1 For watermarking , Others do not add watermark );
$watertype=1;      // Watermark type (1 For the word ,2 For the picture )
$waterposition=1;     // The watermark position (1 For the lower left corner ,2 In the lower right corner ,3 For the upper left corner ,4 In the upper right corner ,5 For the center );
$waterstring="https://www.ofstack.com/";  // Watermark string 
$waterimg="xplore.gif";    // The watermark image 
$imgpreview=1;      // Whether to generate a preview (1 To generate , Others are not generated );
$imgpreviewsize=1/2;    // Thumbnail scale 
?>
<html>
<head>
<title>ZwelL Picture uploader </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">
   Upload a file :
  <input name="upfile" type="file">
  <input type="submit" value=" upload "><br>
   The allowed file type is :<?=implode(', ',$uptypes)?>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
    // Whether a file exists 
    {
         echo " The picture doesn't exist !";
         exit;
    }

    $file = $_FILES["upfile"];
    if($max_file_size < $file["size"])
    // Check file size 
    {
        echo " The file is too large !";
        exit;
    }

    if(!in_array($file["type"], $uptypes))
    // Check file type 
    {
        echo " File type discrepancy !".$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 " The file with the same name already exists ";
        exit;
    }

    if(!move_uploaded_file ($filename, $destination))
    {
        echo " Error moving file ";
        exit;
    }

    $pinfo=pathinfo($destination);
    $fname=$pinfo[basename];
    echo " <font color=red> Uploaded successfully </font><br> The file name :  <font color=blue>".$destination_folder.$fname."</font><br>";
    echo "  The width of the :".$image_size[0];
    echo "  The length of the :".$image_size[1];
    echo "<br>  The size of the :".$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(" Unsupported file types ");
            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:   // Watermarked string 
            imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
            break;
            case 2:   // Watermarked image 
            $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;
        }

        // Overwrite the original uploaded file 
        imagedestroy($nimage);
        imagedestroy($simage);
    }

    if($imgpreview==1)
    {
    echo "<br> Preview picture :<br>";
    echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
    echo " alt=\" Preview picture :\r The file name :".$destination."\r Upload time :\">";
    }
}
?>
</body>
</html>

Related articles: