PHP图片上传代码


Posted in PHP onNovember 04, 2013

使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
/******************************************************************************参数说明:
$max_file_size  : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark   : 是否附加水印(1为加水印,其他为不加水印);
******************************************************************************/
//上传文件类型列表
$uptypes=array(
    'image/jpg',
    'image/jpeg',
    'image/png',
    'image/pjpeg',
    'image/gif',
    'image/bmp',
    'image/x-png'
);
$max_file_size=2000000;     //上传文件大小限制, 单位BYTE
$destination_folder="uploadimg/"; //上传文件路径
$watermark=1;      //是否附加水印(1为加水印,其他为不加水印);
$watertype=1;      //水印类型(1为文字,2为图片)
$waterposition=1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="https://3water.com/";  //水印字符串
$waterimg="xplore.gif";    //水印图片
$imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2;    //缩略图比例
?>
<html>
<head>
<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=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
    }
}
?>
</body>
</html>
PHP 相关文章推荐
用PHP实现的随机广告显示代码
Jun 14 PHP
PHP里的中文变量说明
Jul 23 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 #PHP
php Session存储到Redis的方法
Nov 04 #PHP
在PHP中使用redis
Nov 04 #PHP
6种php上传图片重命名的方法实例
Nov 04 #PHP
php preg_replace替换实例讲解
Nov 04 #PHP
php define的第二个参数使用方法
Nov 04 #PHP
Linux编译升级php的详细方法
Nov 04 #PHP
You might like
PHP 作用域解析运算符(::)
2010/07/27 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
JavaScript 基础问答三
2008/12/03 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
js post提交调用方法
2014/02/12 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
大学生如何写自荐信
2014/01/08 职场文书
春节晚会主持词
2014/03/24 职场文书
网络技术专业求职信
2014/05/02 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
考试保密承诺书
2014/08/30 职场文书
买房协议书范本
2014/10/23 职场文书
文明旅游倡议书
2015/04/28 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
焦点访谈观后感
2015/06/11 职场文书
小型婚礼主持词
2015/06/30 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
初中团支书竞选稿
2015/11/21 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技