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

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

#文件名称:

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

echo '';

echo '';

exit;

}

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值