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 相关文章推荐
别人整理的服务器变量:$_SERVER
Oct 20 PHP
ajax php 实现写入数据库
Sep 02 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
Yii配置文件用法详解
Dec 04 PHP
PHP中的Session对象如何使用
Sep 25 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 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安全性问题中的:Null 字符问题
2013/06/21 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
PHP运行模式汇总
2016/11/06 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
layui实现数据分页功能
2019/07/27 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python集合用法实例分析
2015/05/30 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
为什么说python适合写爬虫
2020/06/11 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
护士自我鉴定范文
2013/10/06 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
党委班子剖析材料
2014/08/21 职场文书
中秋客户感谢信
2015/01/22 职场文书
围城读书笔记
2015/06/26 职场文书
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript