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中的类-什么叫类
Nov 20 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
php模板原理讲解
Nov 13 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php中array_column函数简单实现方法
Jul 11 PHP
php格式化时间戳
Dec 17 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP ADODB实现分页功能简单示例
May 25 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
详解Vue 如何监听Array的变化
2019/06/06 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
python实现的防DDoS脚本
2011/02/08 Python
python 默认参数相关知识详解
2019/09/18 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
小区门卫工作职责
2013/12/14 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
综治工作心得体会
2014/09/11 职场文书
安全生产标语大全
2014/10/06 职场文书
导游词范文
2015/02/13 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
Redis基本数据类型List常用操作命令
2022/06/01 Redis