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一些服务器端特性的配置加强php的安全
Oct 09 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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查看session内容的函数
2008/08/27 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
PHP安全下载文件的方法
2016/04/07 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
机关出纳岗位职责
2014/04/03 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
三年级评语大全
2014/04/23 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2014年应急工作总结
2014/12/11 职场文书
反邪教学习心得体会
2016/01/15 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Python3.10的一些新特性原理分析
2021/09/15 Python