复制代码
- #*********************************************************
- #文件名称:
- 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(<A
- 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[/email]))
- {
- $this ->
- alert("文件已上传!");
- exit;
- }
- //检查目录是否存在,不存在则创建
- if(<A
- 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.''[/email]))
- {
- $this ->
- createfolder(''.$_YL_UPLOAD['file_urldirectroy'].''.$yl_file_path.'');//创建目录
- }
- //检查目录写权限
- if
- (<A
- 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.''[/email]))
- {
- $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
- '<br>';
- /*
- echo
- '原文件名:'.$yl_filename.'';
- echo
- '<br>';
- echo
- '新文件名及目录:'.$yl_file_path.'/'.$yl_filenamenewsext;
- echo
- '<br>';
- echo
- '文件大小:'.$yl_file_size.'';
- echo '<br>';
- 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 '<html>';
- echo '<head>';
- echo '<title>error</title>';
- echo '<meta http-equiv="content-type" content="text/html; charset=gb2312">';
- echo '</head>';
- echo '<body>';
- echo '<script type="text/javascript">alert("'.$yl_msg.'");history.back();</script>';
- echo '</body>';
- echo '</html>';
- exit;
- }
- }
|