• 技术文章 >php教程 >php手册

    PHP非常实用的上传类,上传效果在线演示

    2016-06-21 08:51:30原创525
      #*********************************************************

      #文件名称:

      inc_class.upload.php

      #Copyright (c)

      2007-2009 青春一度 all rights reserved.

      #最后更新: 2009-08-05

      #版本 : v 2.0.a

      #注:转发时请保留此声明信息,这段声明不并会影响你的速度!

      #如有修改请将修改后的文件以邮件形式发送给作者一份,谢谢!

      #

      #*********************************************************

      if(!defined('IN_PHPADLEYIU'))

      {

      exit('Access Denied');

      }

      /*

      //使用说明:

      //声明一个上传类

      include_once(ADLEYLIU_ROOT.'./inc_class.upload.php');

      $_YL_UPLOAD

      = array();

      $yl_uploadfile = new

      yl_upload_class();

      $_YL_UPLOAD['yl_filedata'] =

      'uploadFile';//表单名

      $_YL_UPLOAD['yl_directroy'] =

      'upload_files';//上传主目录

      $_YL_UPLOAD['file_urldirectroy'] = '/';//

      程序路径

      $_YL_UPLOAD['yl_settingsnew'] =

      ''.date('ym').'/'.date('d').'/'.substr(time(), 0,

      5).'';//上传子主目录

      $_YL_UPLOAD['yl_maxsize'] = 1048576;

      //这里以字节为单位(1024*2)*1024=2097152 就是 2M

      $_YL_UPLOAD['yl_sizeformat'] =

      'k'; //显示文件大小单位b字节,k千,m兆

      $_YL_UPLOAD['yl_arrext'] =

      array('gif','jpg','jpeg','png','bmp','rar','txt');//允许上传文件类型

      $_YL_UPLOAD['yl_ext'] = 0; //0原文件类型上传,1统一为存为jpg

      $_YL_UPLOAD['yl_prefix'] = ''.$uid.''.$yl_uploadfile -> yl_createrand(1,0).''.$cid.'';

      //在文件名前缀加上特殊字符 //$uid 会员ID $cid 分类ID

      $_YL_UPLOAD['yl_suffix'] = ''; //''.$yl_uploadfile -> yl_createrand(3,0).'';

      //在文件名后缀加上特殊字符

      $_YL_UPLOAD['thumbwidth'] = 100;

      //缩略图宽

      $_YL_UPLOAD['thumbheight'] = 100;

      //缩略图高

      $_YL_UPLOAD['maxthumbwidth'] = 500;

      //大图高

      $_YL_UPLOAD['maxthumbheight'] = 500;

      //大图宽

      //上传

      $yl_uploadfile -> yl_uploadfile();

      获取值:

      'yl_filename' => addslashes($_YL_UPLOAD['yl_filename']),原文件名

      'yl_attachment' => $_YL_UPLOAD['yl_attachment'],新文件名及路径

      'yl_filesize' => $_YL_UPLOAD['yl_filesize'] ,文件大小

      'yl_filetype' => $_YL_UPLOAD['yl_filetype'],文件类型

      'yl_isimage' => $_YL_UPLOAD['yl_isimage'],是否是图片

      'yl_isthumb' => $_YL_UPLOAD['yl_isthumb'],是否有小图片

      */

      class yl_upload_class

      {

      function __GET($property_name)

      {

      if(isset($this -> $property_name))

      {

      return $this -> $property_name;

      } else

      {

      return

      NULL;

      }

      }

      function __SET($property_name,

      $value) {

      $this -> $property_name =

      $value;

      }

      #*********************************************************

      #生成缩略图

      #*********************************************************

      function makethumb($srcfile) {

      global $_YL_UPLOAD;

      //判断文件是否存在

      if (!file_exists($srcfile))

      {

      return '';

      }

      $dstfile =

      $srcfile.'.small.jpg';

      $bigfile =

      $srcfile.'.big.jpg';

      //缩略图大小

      $tow =

      intval($_YL_UPLOAD['thumbwidth']);

      $toh =

      intval($_YL_UPLOAD['thumbheight']);

      if($tow < 60) $tow =

      60;

      if($toh < 60) $toh = 60;

      $make_max = 0;

      $maxtow =

      intval($_YL_UPLOAD['maxthumbwidth']);

      $maxtoh =

      intval($_YL_UPLOAD['maxthumbheight']);

      if($maxtow >= 300

      && $maxtoh >= 300) {

      $make_max =

      1;

      }

      //获取图片信息

      $im = '';

      if($data =

      getimagesize($srcfile)) {

      if($data[2] == 1)

      {

      $make_max =

      0;//gif不处理

      if(function_exists("imagecreatefromgif"))

      {

      $im =

      imagecreatefromgif($srcfile);

      }

      }

      elseif($data[2] == 2)

      {

      if(function_exists("imagecreatefromjpeg"))

      {

      $im =

      imagecreatefromjpeg($srcfile);

      }

      }

      elseif($data[2] == 3)

      {

      if(function_exists("imagecreatefrompng"))

      {

      $im =

      imagecreatefrompng($srcfile);

      }

      }

      }

      if(!$im)

      return '';

      $srcw = imagesx($im);

      $srch = imagesy($im);

      $towh = $tow/$toh;

      $srcwh =

      $srcw/$srch;

      if($towh <= $srcwh){

      $ftow =

      $tow;

      $ftoh = $ftow*($srch/$srcw);

      $fmaxtow = $maxtow;

      $fmaxtoh =

      $fmaxtow*($srch/$srcw);

      } else {

      $ftoh =

      $toh;

      $ftow = $ftoh*($srcw/$srch);

      $fmaxtoh = $maxtoh;

      $fmaxtow =

      $fmaxtoh*($srcw/$srch);

      }

      if($srcw <= $maxtow

      && $srch <= $maxtoh) {

      $make_max =

      0;//不处理

      }

      if($srcw > $tow $srch > $toh)

      {

      if(function_exists("imagecreatetruecolor") &&

      function_exists("imagecopyresampled") && @$ni =

      imagecreatetruecolor($ftow, $ftoh))

      {

      imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftow,

      $ftoh, $srcw,

      $srch);

      //大图片

      if($make_max

      && @$maxni = imagecreatetruecolor($fmaxtow, $fmaxtoh))

      {

      imagecopyresampled($maxni, $im, 0, 0, 0, 0,

      $fmaxtow, $fmaxtoh, $srcw, $srch);

      }else if (@$maxni

      = imagecreatetruecolor(round($srcw/2),

      round($srch/2))){

      imagecopyresampled($maxni,

      $im, 0, 0, 0, 0, round($srcw/2), round($srch/2), $srcw,

      $srch);

      }

      }

      elseif(function_exists("imagecreate") &&

      function_exists("imagecopyresized") && @$ni = imagecreate($ftow, $ftoh))

      {

      imagecopyresized($ni, $im, 0, 0, 0, 0, $ftow,

      $ftoh, $srcw,

      $srch);

      //大图片

      if($make_max

      && @$maxni = imagecreate($fmaxtow, $fmaxtoh))

      {

      imagecopyresized($maxni, $im, 0, 0, 0, 0,

      $fmaxtow, $fmaxtoh, $srcw, $srch);

      }else if (@$maxni

      = imagecreate(round($srcw/2),

      round($srch/2))){

      imagecopyresized($maxni, $im,

      0, 0, 0, 0, round($srcw/2), round($srch/2), $srcw,

      $srch);

      }

      } else

      {

      return

      '';

      }

      if(function_exists('imagejpeg'))

      {

      imagejpeg($ni,

      $dstfile);

      //大图片

      if($make_max)

      {

      imagejpeg($maxni,

      $bigfile);

      }else{

      imagejpeg($maxni,

      $bigfile);

      }

      }

      elseif(function_exists('imagepng')) {

      imagepng($ni,

      $dstfile);

      //大图片

      if($make_max)

      {

      imagepng($maxni,

      $bigfile);

      }else{

      imagejpeg($maxni,

      $bigfile);

      }

      }

      imagedestroy($ni);

      if($make_max)

      {

      }else{

      imagedestroy($maxni);

      }

      }else{

      if(function_exists("imagecreatetruecolor") &&

      function_exists("imagecopyresampled") && @$ni =

      imagecreatetruecolor($srcw, $srch))

      {

      imagecopyresampled($ni, $im, 0, 0, 0, 0, $srcw,

      $ftoh, $srch,

      $srch);

      //大图片

      $maxni =

      imagecreatetruecolor($srch, $srch);

      imagecopyresampled($maxni, $im, 0, 0, 0, 0, $srcw, $srch, $srcw,

      $srch);

      } elseif(function_exists("imagecreate")

      && function_exists("imagecopyresized") && @$ni =

      imagecreate($ftow, $ftoh)) {

      imagecopyresized($ni,

      $im, 0, 0, 0, 0, $srcw, $srch, $srcw,

      $srch);

      //大图片

      $maxni =

      imagecreate($fmaxtow, $fmaxtoh);

      imagecopyresized($maxni, $im, 0, 0, 0, 0, $srcw, $srch, $srcw,

      $srch);

      } else

      {

      return

      '';

      }

      imagejpeg($ni, $dstfile);

      imagejpeg($maxni,

      $bigfile);

      }

      imagedestroy($im);

      if(!file_exists($dstfile)) {

      return

      '';

      } else {

      return

      $dstfile;

      }

      }

      #*********************************************************

      #获取随机数函数

      #*********************************************************

      function

      yl_createrand($length, $numeric = 0) {

      PHP_VERSION < '4.2.0'

      && mt_srand((double)microtime() * 1000000);

      if($numeric)

      {

      $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10,

      $length) - 1));

      } else {

      $hash =

      '';

      $chars =

      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';///0123456789

      $max

      = strlen($chars) - 1;

      for($i = 0; $i < $length; $i++)

      {

      $hash .= $chars[mt_rand(0,

      $max)];

      }

      }

      return

      $hash;

      }

      #***************

      #*********************************************************

      #创建目录函数

      #*********************************************************

      function

      createfolder($yl_path)

      {

      if

      (!file_exists($yl_path))

      {

      $this ->

      createfolder(dirname($yl_path));

      @mkdir($yl_path,

      0777);

      }

      return $this ->

      createfolder;

      }

      #*********************************************************

      #获取文件

      名称,大小,类型,临时文件名

      #*********************************************************

      function

      yl_getfilename($yl_type)

      {

      global

      $_YL_UPLOAD;

      return

      $_FILES[$_YL_UPLOAD['yl_filedata']][$yl_type];

      }

      #*********************************************************

      #获取文件大小

      #*********************************************************

      function

      yl_getfilesize()

      {

      global

      $_YL_UPLOAD;

      $yl_filesize = $this ->

      yl_getfilename('size');

      if($yl_filesize ==

      0){

      $this ->

      alert("请选择上传文件!");

      exit;

      }

      if($yl_filesize

      > $_YL_UPLOAD['yl_maxsize']){

      switch

      (strtolower($_YL_UPLOAD['yl_sizeformat'])){

      case

      'b':

      $yl_maxsizek = $_YL_UPLOAD['yl_maxsize'] .

      ' B';

      break;

      case

      'k':

      $yl_maxsizek =

      $_YL_UPLOAD['yl_maxsize']/1024 . '

      K';

      break;

      case

      'm':

      $yl_maxsizek =

      $_YL_UPLOAD['yl_maxsize']/(1024*1024) . '

      M';

      }

      $this ->

      alert("上传文件超出限制范围[".$yl_maxsizek."].K!");

      exit;

      }

      return

      $yl_filesize;

      }

      #*********************************************************

      #获得文件扩展名

      #*********************************************************

      function

      yl_getfiletype()

      {

      global

      $_YL_UPLOAD;

      $pathinfo = pathinfo($this -> yl_getfilename('name'));

      $yl_file_ext =

      strtolower($pathinfo['extension']);

      //检查扩展名

      if(!array_keys($_YL_UPLOAD['yl_arrext'],$yl_file_ext))

      {

      $this ->

      alert("上传文件类型被限制!");

      exit;

      }

      return

      $yl_file_ext;

      }

      #*********************************************************

      #上传验证

      #*********************************************************

      function

      yl_upfile($source, $target) {

      //

      如果一种函数上传失败,还可以用其他函数上传

      if (function_exists('move_uploaded_file')

      && @move_uploaded_file($source, $target))

      {

      @chmod($target, 0666);

      return

      $target;

      } elseif (@copy($source, $target))

      {

      @chmod($target, 0666);

      return

      $target;

      } elseif (@is_readable($source))

      {

      if ($fp = @fopen($source,'rb'))

      {

      @flock($fp,2);

      $filedata

      =

      @fread($fp,@filesize($source));

      @fclose($fp);

      }

      if

      ($fp = @fopen($target, 'wb')) {

      @flock($fp,

      2);

      @fwrite($fp,

      $filedata);

      @fclose($fp);

      @chmod

      ($target, 0666);

      return

      $target;

      } else {

      return

      false;

      }

      }

      }

      #*********************************************************

      #上传

      #*********************************************************

      function

      yl_uploadfile()

      {

      global $_YL_UPLOAD;

      $yl_file_path = $_YL_UPLOAD['yl_directroy'].'/'.$_YL_UPLOAD['yl_settingsnew'] ;//建立一个目录

      $yl_filename = $this -> yl_getfilename('name');//原文件名

      $yl_filenamenews = $_YL_UPLOAD['yl_prefix'].''.substr(time(), 5, 9).''.$_YL_UPLOAD['yl_suffix'].'';//重命名

      $yl_file_size = $this -> yl_getfilesize();//获取文件大小

      $yl_file_type = $this -> yl_getfiletype();//获取文件类型

      if($_YL_UPLOAD['yl_ext'] ==

      0){

      $yl_filenamenewsext = $yl_filenamenews.'.'.$yl_file_type;//改名

      }elseif ($_YL_UPLOAD['yl_ext'] == 1){

      $yl_filenamenewsext = $yl_filenamenews.'.jpg';//统一改名为jpg

      }

      //$yl_tmp_name = str_replace(' ','',$this ->

      yl_getfilename('tmp_name'));//服务器上临时文件名

      $yl_tmp_name = $this -> yl_getfilename('tmp_name');//服务器上临时文件名

      //检查是否已上传

      if(

      href="//m.sbmmt.com/m/article/!@is_uploaded_file($yl_tmp_name" _cke_saved_href="[email=!@is_uploaded_file($yl_tmp_name]!@is_uploaded_file($yl_tmp_name">mailto:!@is_uploaded_file($yl_tmp_name">!@is_uploaded_file($yl_tmp_name))

      {

      $this ->

      alert("文件已上传!");

      exit;

      }

      //检查目录是否存在,不存在则创建

      if(

      href="//m.sbmmt.com/m/article/!@is_dir(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''" _cke_saved_href="[email=!@is_dir(]!@is_dir(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''">mailto:!@is_dir(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''">!@is_dir(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''))

      {

      $this ->

      createfolder(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.'');//创建目录

      }

      //检查目录写权限

      if

      (

      href="//m.sbmmt.com/m/article/!@is_writable(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''" _cke_saved_href="[email=!@is_writable(]!@is_writable(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''">mailto:!@is_writable(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''">!@is_writable(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.''))

      {

      $this ->

      alert("上传目录没有写权限!");

      exit;

      }

      $yl_path_name

      =

      ''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.'/'.$yl_filenamenewsext.'';

      $yl_doupload = $this -> yl_upfile($yl_tmp_name, $yl_path_name);

      if($yl_doUpload === false){

      $this -> alert("上传失败!");

      exit;

      }else{

      //echo

      '上传成功';

      //echo

      '
    ';

      /*

      echo

      '原文件名:'.$yl_filename.'';

      echo

      '
    ';

      echo

      '新文件名及目录:'.$yl_file_path.'/'.$yl_filenamenewsext;

      echo

      '
    ';

      echo

      '文件大小:'.$yl_file_size.'';

      echo '
    ';

      echo '文件类型:'.$yl_file_type.'';

      */

      $_YL_UPLOAD['yl_filename'] = $yl_filename;

      $_YL_UPLOAD['yl_attachment'] = ''.$yl_file_path.'/'.$yl_filenamenewsext.'';

      $_YL_UPLOAD['yl_filesize'] = $yl_file_size;

      $_YL_UPLOAD['yl_filetype'] = $yl_file_type;

      //检查是否图片

      if(@getimagesize($yl_path_name))

      {

      $_YL_UPLOAD['yl_isimage'] =

      1;

      ///生成缩略图

      if ($this -> makethumb($yl_path_name)){

      $_YL_UPLOAD['yl_isthumb'] = 1;

      }else{

      $_YL_UPLOAD['yl_isthumb'] = 0;

      }

      }else{

      $_YL_UPLOAD['yl_isimage'] = 0;

      }

      }

      return

      true;

      }

      #*********************************************************

      #提示

      #*********************************************************

      function

      alert($yl_msg)

      {

      echo '';

      echo '';

      echo '';

      echo '';

      echo '';

      echo '';

      echo ' ';

      echo '';

      echo '';

      exit;

      }

      }



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:39 YL upload function quot
    上一篇:Android访问php取回json数据 下一篇:使用命名参数调用 PHP 函数
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 初学PHP的朋友 经常问的一些问题。不断更新_php基础• PHP数组和explode函数示例总结,数组explode• Codeigniter的一些优秀实践• 浅谈php扩展imagick• php 连接 mysql数据库操作类
    1/1

    PHP中文网