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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
实用函数9
Nov 08 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
destoon各类调用汇总
Jun 20 PHP
php格式化金额函数分享
Feb 02 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
用户的详细注册和判断
2006/10/09 PHP
一个域名查询的程序
2006/10/09 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
python去除所有html标签的方法
2015/05/05 Python
Python 防止死锁的方法
2020/07/29 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
元旦红领巾广播稿
2014/02/19 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
秋季运动会开幕词
2015/01/28 职场文书
2016公司年会主持词
2015/07/01 职场文书
百年校庆感言
2015/08/01 职场文书
2019同学聚会主持词
2019/05/06 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
vue实现简易音乐播放器
2022/08/14 Vue.js