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基础知识:函数基础知识
Dec 13 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
PHP发送短信代码分享
Aug 11 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
php微信开发之谷歌测距
Jun 14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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
mysql 字段类型说明
2007/04/27 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js计算精度问题小结
2013/04/22 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
20招让你的Python飞起来!
2016/09/27 Python
简单谈谈python中的语句和语法
2017/08/10 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
高中化学教学反思
2014/01/13 职场文书
房产转让协议书
2014/04/11 职场文书
2014年党支部工作总结
2014/11/13 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
师德承诺书2015
2015/04/28 职场文书