php经典文件上传类
#*********************************************************
#文件名称:
inc_class.upload.php
#功能描述: 上传文件类
#程序制作:青春一度(adleyliu)
#联系qq
:14339095
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="mailto:!@is_uploaded_file($yl_tmp_name">!@is_uploaded_file
($yl_tmp_name))
{
$this ->
alert("文件已上传!");
exit;
}
//检查目录是否存在,不存在则创建
if(
href="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="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 ' http-equiv="content-type" content="text/html;
charset=gb2312">';
echo '';
echo
'';
echo '<script></script> type="text/javascript">alert("'.$yl_msg.'");history.back();';
echo
'';
echo
'';
exit;
}
}

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 中国語版
中国語版、とても使いやすい
