仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1054|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页设计PHP十分适用的上传类,上传后果在线演示...

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-3 23:30:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。     
    #*********************************************************
    #文件称号:
    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 ' <script></script>';
    echo '';
    echo '';
    exit;
    }
    }
基础这个东西,有人问学php需要任何基础不?
兰色精灵 该用户已被删除
18#
发表于 2015-5-8 17:39:57 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
17#
发表于 2015-5-3 20:57:22 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
冷月葬花魂 该用户已被删除
16#
发表于 2015-5-1 04:11:35 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-28 12:26:44 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
小魔女 该用户已被删除
14#
发表于 2015-4-28 02:04:35 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
第二个灵魂 该用户已被删除
13#
发表于 2015-4-10 10:42:38 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
飘灵儿 该用户已被删除
12#
发表于 2015-4-7 19:53:20 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
因胸联盟 该用户已被删除
11#
发表于 2015-3-27 12:09:45 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
蒙在股里 该用户已被删除
10#
发表于 2015-3-25 09:32:40 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-22 23:11:24 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
简单生活 该用户已被删除
8#
发表于 2015-3-17 07:09:32 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
乐观 该用户已被删除
7#
发表于 2015-3-17 02:11:37 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
再见西城 该用户已被删除
6#
发表于 2015-3-16 23:53:11 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
谁可相欹 该用户已被删除
5#
 楼主| 发表于 2015-3-9 14:54:24 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
山那边是海 该用户已被删除
地板
发表于 2015-2-22 08:55:08 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
再现理想 该用户已被删除
板凳
发表于 2015-2-10 04:21:33 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
柔情似水 该用户已被删除
沙发
发表于 2015-2-5 11:07:27 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
透明 该用户已被删除
楼主
发表于 2015-2-4 00:07:40 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表