Heim  >  Artikel  >  php教程  >  PHP非常实用的上传类,上传效果在线演示

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

WBOY
WBOYOriginal
2016-06-21 08:51:30899Durchsuche

 

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

  #文件名称:

  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;

  if($toh

  $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

  $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

  && $srch

  $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

  && 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

  {

  $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="!@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="!@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="!@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 ' <script></script>';

  echo '';

  echo '';

  exit;

  }

  }



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn