zoukankan      html  css  js  c++  java
  • [PHP] 兼容IE,火狐的上传类,包括缩图生成和使用例子

    来源:http://www.icediary.net/article.asp?id=103

    <?php
    class ieb_upload
    {
    var $FormName; //文件域名称
    var $Directroy; //上传至目录
    var $MaxSize; //最大上传大小
    var $CanUpload; //是否可以上传
    var $doUpFile; //上传的文件名
    var $sm_File; //缩略图名称
    var $Error; //错误参数

    function ieb_upload($formName = '', $dirPath = '', $maxSize = 2097152) // (1024*2)*1024=2097152 就是 2M
    {
    global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
    // 初始化各种参数
    $FormName = $formName;
    $MaxSize = $maxSize;
    $CanUpload = true;
    $doUpFile = '';
    $sm_File = '';
    $Error = 0;

    if ($formName == '')
    {
    $CanUpload = false;
    $Error = 1;
    break;
    }

    if ($dirPath == '')
    $Directroy = $dirPath;
    else
    $Directroy = $dirPath.'/';
    }
    // 检查文件是否存在
    function scanFile()
    {
    global $FormName, $Error, $CanUpload;

    if ($CanUpload)
    {
    $scan = is_readable($_FILES[$FormName]['name']);

    if ($scan)
    $Error = 2;

    return $scan;
    }
    }
    // 获取文件大小
    function getSize($format = 'B')
    {
    global $FormName, $Error, $CanUpload;

    if ($CanUpload)
    {
    if ($_FILES[$FormName]['size'] == 0)
    {
    $Error = 3;
    $CanUpload = false;
    }

    switch ($format)
    {
    case 'B':
    return $_FILES[$FormName]['size'];
    break;

    case 'K':
    return ($_FILES[$FormName]['size']) / (1024);
    break;

    case 'M':
    return ($_FILES[$FormName]['size']) / (1024 * 1024);
    break;
    }
    }
    }
    // 获取文件类型
    function getExt()
    {
    global $FormName, $Error, $CanUpload;

    if ($CanUpload)
    {
    $ext = $_FILES[$FormName]['name'];
    $extStr = explode('.', $ext);
    $count = count($extStr)-1;
    }
    return $extStr[$count];
    }
    // 获取文件名称
    function getName()
    {
    global $FormName, $CanUpload;

    if ($CanUpload)
    return $_FILES[$FormName]['name'];
    }
    // 新建文件名
    function newName()
    {
    global $CanUpload, $FormName;

    if ($CanUpload)
    {
    $FullName = $_FILES[$FormName]['name'];
    $extStr = explode('.', $FullName);
    $count = count($extStr)-1;
    $ext = $extStr[$count];

    return date('YmdHis').rand(0, 9).'.'.$ext;
    }
    }
    // 上传文件
    function upload($fileName = '')
    {
    global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;

    if ($CanUpload)
    {
    if ($_FILES[$FormName]['size'] == 0)
    {
    $Error = 3;
    $CanUpload = false;
    return $Error;
    break;
    }
    }

    if ($CanUpload)
    {
    if ($fileName == '')
    $fileName = $_FILES[$FormName]['name'];

    $doUpload = @copy($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);

    if ($doUpload)
    {
    $doUpFile = $fileName;
    chmod($Directroy.$fileName, 0777);
    return true;
    }
    else
    {
    $Error = 4;
    return $Error;
    }
    }
    }
    // 创建图片缩略图
    function thumb($dscChar = '', $width = 150, $height = 113)
    {
    global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;

    if ($CanUpload && $doUpFile != '')
    {
    $srcFile = $doUpFile;

    if ($dscChar == '')
    $dscChar = 'sm_';

    $dscFile = $Directroy.$dscChar.$srcFile;
    $data = getimagesize($Directroy.$srcFile, &$info);

    switch ($data[2])
    {
    case 1:
    $im = @imagecreatefromgif($Directroy.$srcFile);
    break;

    case 2:
    $im = @imagecreatefromjpeg($Directroy.$srcFile);
    break;

    case 3:
    $im = @imagecreatefrompng($Directroy.$srcFile);
    break;
    }

    $srcW = imagesx($im);
    $srcH = imagesy($im);
    $ni = imagecreatetruecolor($width, $height);
    imagecopyresized(
    $ni, $im, 0, 0, 0, 0, $width, $height, $srcW, $srcH);
    $cr = imagejpeg($ni, $dscFile);
    chmod($dscFile, 0777);

    if ($cr)
    {
    $sm_File = $dscFile;
    return true;
    }
    else
    {
    $Error = 5;
    return $Error;
    }
    }
    }
    // 显示错误参数
    function Err()
    {
    global $Error;
    return $Error;
    }
    // 上传后的文件名
    function UpFile()
    {
    global $doUpFile, $Error;
    if ($doUpFile != '')
    return $doUpFile;
    else
    $Error = 6;
    }
    // 上传文件的路径
    function filePath()
    {
    global $Directroy, $doUpFile, $Error;
    if ($doUpFile != '')
    return $Directroy.$doUpFile;
    else
    $Error = 6;
    }
    // 缩略图文件名称
    function thumbMap()
    {
    global $sm_File, $Error;
    if ($sm_File != '')
    return $sm_File;
    else
    $Error = 6;
    }
    // 显示版本信息
    function ieb_version()
    {
    return 'IEB_UPLOAD CLASS Ver 1.1';
    }
    }
    // ----------------------------------------------------------------------
    // 转发时请保留此声明信息,这段声明不并会影响你的速度!
    // ******************* IEB上传类 v1.1 ***********
    // 作者:卢韦华
    // 网站:www.iebsoft.cn
    // 电子邮件:yagas60@21cn.com
    // 版权声明:版权所有,源代码公开,各种用途均可免费使用,但是修改后必须把修改后的文件
    // 发送一份给作者.
    // ****************************************************


    ?>



    使用方法:


    <?php
    // 加载上传类
    // include('ieb_upload.inc');

    ?>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>

    <body style="font-size:12px;">
    <form action="" method="post" enctype="multipart/form-data" name="form1">
    <input type="file" name="file">
    <input type="submit" name="Submit" value="提交">
    <input name="scan" type="hidden" id="up" value="true">
    </form><b /><br/>

    <?php
    if (isset($_REQUEST['scan']))
    {
    // 声明一个上传类
    $upfos = new ieb_upload('file', 'tmp');

    /**
    * ieb_upload( FormName, [Directroy, MaxSize])
    *
    *   FormName: 文件域的名称,这个例子里用的是 file 。这个参数不能省略。
    *   Directroy: 保存上传文件的目录名称。此参数如果省略,文件将上传至该处理页目录中。
    *   MaxSize: 允许上传的文件的大小限制。默认值为 2097152 byte (即 2M)。
    */
    // 返回将要上传的文件名称
    echo '文件名称:'.$upfos->getName().'<br/>';
    // 返回文件后缀名
    echo '文件类型:'.$upfos->getExt().'<br/>';
    // 返回文件大小
    echo '文件大小:'.$upfos->getSize().'<br/>';

    /**
    * getSize( format )
    *
    *   format: 返回文件大小的单位值。默认值为 B。
    *   B 为 byte
    *   M 为 MB
    *   例:getSize( 'B' );
    */
    // 随机生成的文件名
    echo '随机文件:'.$upfos->newName().'<br/>';

    /**
    * 建议使用随机生成的文件名,以避免上传重名的文件。
    * 例如: $upfos->upload ( $upfos->newName());
    */
    // 上传文件
    $upfos->upload();

    /**
    * upload( filename )
    *
    *   filename: 上传至服务器后生成这个文件名。默认值为原来的文件名。
    */
    // 生成缩略图
    $upfos->thumb();

    /**
    * thumb( [key, width, height] )
    *
    *   key: 生成缩略图的关键字。默认值为"sm_"。如果上传的文件名为 12345.jpg,缩略图的文件名就为 sm_12345.jpg。
    *   缩略图的宽度。默认值为 150 。
    *   height: 缩略图的高度。默认值为 113。
    *   例:$upfos->thumb ( 'slt_', 200, 140);
    */
    // 返回生成的文件名
    echo '生成文件:'.$upfos->UpFile().'<br/>';
    // 返回文件的路径
    echo '文件路径:'.$upfos->filePath().'<br/>';
    // 返回缩略图的名称
    echo '缩略图片:'.$upfos->thumbMap().'<br/>';
    // 返回上传类版本信息
    echo '版本信息:'.$upfos->ieb_version().'<br/>';
    }
    ?>
    </body>
    </html>

    个性签名:做要做好,做到不三不四不如不做。
  • 相关阅读:
    如何使用SQL语句 查看存储过程的内容
    sl第一篇
    winForm连接数据库(sqlserver2005)
    Format
    dual使用
    ThreadLocal与事务
    oracle中的常用函数
    Oracle中merge into的使用
    API设计中token的思路
    SVN常用功能
  • 原文地址:https://www.cnblogs.com/hcbin/p/1834157.html
Copyright © 2011-2022 走看看