PHP文件上传实例详解!!! - PHP技术 - 三路友社论坛 娱乐交友社区论坛 - SNS
返回列表 回复 发帖

PHP文件上传实例详解!!!

最近为了象牙,有点不务正业的嫌疑,经过最近一段时间的疯狂灌水终于拿到了象牙,嘿嘿,今天重出江湖,想到论坛似乎没什么为新手讲的上传实例,而这部分是很常用的,故今天献丑为各位新鸟详细讲解下怎样实现文件上传。用过ASP的都知道,ASP的上传要么购买官方的组件实现,要么就编写复杂的上传类,是相当麻烦的,这里不免要宣传下PHP,PHP使上传变的非常容易且这一切都是免费的,怎么样,你心动了没有?心动不如行动(好土的台词- _ -!),赶紧跟我来吧~~~,另外说一句,斑竹如果觉得我写的好,可要给我加精哦!!^_^
     首先来看下上传部分的表单代码: CODE:
     <form method="post" action="upload.php" enctype="multipart/form-data">
     <table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
      <tr>
        <td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000">文件: </TD>
        <td height="16">
        <input name="file" type="file"  value="浏览" >
         
        < input type="submit" value="上传" name="B1">
        </td>
      </tr>
     </table>
     </form>
     这里有几个要注意的地方,首先看这句<form method="post" action="upload.php" enctype="multipart/form-data">这里我们采用POST方法,个别浏览器还支持PUT方法,当然这需要对脚本进行修改,我并不建议这么做。表单中必须设置enctype="multipart/form-data,这样,服务器就知道上传文件带有常规表单信息,记住,这个是必须设置的。此外还需要一个隐藏域来限制上传文件的最大长度:<input type="hidden" name="MAX_FILE_SIZE" value="2000000">,这里name必须设置成MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M。再看这句:<input name="file" type="file"  value="浏览" >,type="file"说明了文件类型,这样一个基本的上传文件接口就完成了,接下来讲讲如何用PHP来处理上传的文件,此外你的php.ini中设置的上传文件最大长度可能会影响到你的实际上传,请根据实际情况修改,另PHP的上传是先传到临时目录,在移至指定目录的,了;临时目录的可根据需要修改,也可使用默认值。
   好的,表单提交upload.php,来看看这个页面都有什么:
[php]
<?php

/*****************************************

   Title :文件上传详解
   Author:leehui1983(辉老大)
   Finish Date  :2006-12-28

  *****************************************/

   $uploaddir = "./files/";//设置文件保存目录 注意包含/   
   $type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
   $patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程序所在路径
   
   //获取文件后缀名函数
      function fileext($filename)
    {
        return substr(strrchr($filename, '.'), 1);
    }
   //生成随机文件名函数   
    function random($length)
    {
        $hash = 'CR-';
        $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
        $max = strlen($chars) - 1;
        mt_srand((double)microtime() * 1000000);
            for($i = 0; $i < $length; $i++)
            {
                $hash .= $chars[mt_rand(0, $max)];
            }
        return $hash;
    }

   $a=strtolower(fileext($_FILES['file']['name']));
   //判断文件类型
   if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
     {
        $text=implode(",",$type);
        echo "您只能上传以下类型文件: ",$text,"<br>";
     }
   //生成目标文件的文件名   
   else{
    $filename=explode(".",$_FILES['file']['name']);
        do
        {
            $filename[0]=random(10); //设置随机数长度
            $name=implode(".",$filename);
            //$name1=$name.".Mcncc";
            $uploadfile=$uploaddir.$name;
        }

   while(file_exists($uploadfile));

        if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){
            
            if(is_uploaded_file($_FILES['file']['tmp_name']){
                //输出图片预览
                echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
                echo"<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";
              }
              else{
                echo "上传失败!";
              }
        }
   }

?>
[/php]
    刚看这些你可能有点晕~~,不过不要紧,听我讲完,你就会发现其实这玩意SO EASY!!首先我讲下原理,该程序以上传图片为例,先判断文件类型是否为图片格式,若是则上传文件,以随机数和时间的组合重新命名文件(避免上传文件重名,这样做很有必要!),接着上传文件到指定目录,成功上传则输出上传的图片预览。这里要对程序中一些函数作些解释。先看return substr(strrchr($filename, '.'), 1), strrchar()函数有什么作用呢,我举个例子大家就知道,比如一个图片文件 pic.jpg,我们用 strrchr处理,strrchr(pic.jpg,'.'),它将返回.jpg,明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符。配合 substr() 我们就可以取到jpg,这样我们就得到了文件的后缀名,来判断上传文件是否符合指定格式。本程序把指定的格式放在一个数组中,实际使用时可根据需要添加。
    接下来看产生随机数文件名部分, 我们看到mt_srand()这个函数,手册上叫他“播下一个更好的随机数发生器种子”,其实就是初始化一个随机数的函数,参数是(double)microtime() * 1000000,这里如果不这是参数就会自动设置个随机数,当然这不符合我们的需要,如此一来,随机数就具备一定的长度,保证了上传文件不重名。接着,我们调用判断文件类型的函数,并将其转化为小写strtolower(fileext($_FILES['file']['name'])),这里有个很关键的东东$_FILES ,这是个超级全局数组,保存了需要处理的表单数据,如果开启了register_globals,也可以直接访问,但这是不安全的。看刚才那个上传接口<inputname="file"type="file"  value="浏览" >,根据这个表单名称,我们可以得到很多信息:
    $_FILES['file']['name']--  得到文件名称
    $_FILES['file']['tmp_name']--得到临时存储位置
    $_FILES['file']['size']--得到文件大小
    $_FILES['file']['type']--得到文件MIME类型
得到这些信息,我们就可以轻松判断文件的信息了,是不是很方便?^_^,接下来还有一些函数需要了解,file_exists()--判断指定目录是否存在,不存在我们当然不能上传(好像是废话!),move_uploaded_file--将上传文件移至指定目录,is_uploaded_file--判断文件是否已经通过HTTP POST上传。成功上传,我们就输出预览,否则输出上传失败!大功告成
   大家可根据这个进行扩展,比如配合JS实现多文件上传,如DZ的上传效果,再深一点结合AJAX实现无刷新上传,很多博客都有采用,最后播放下下两篇原创文章的预告
1  我将把这个例子扩展,增加后台和数据库部分,实现上传文件管理,审核,将发布在原创区。
2  利用目录函数实现文件管理,将发布在新手区
希望感兴趣的朋友届时观看~~~,谢谢!!!!!!
航空机票改签机票退票中心客服电话:⊙4006-55-5870⊙√
   受理业务: (1)网上机票销售。  (2)网上机票预订服务。 (3)酒店预订服务。 (4)网上退票服务。
   近期我公司将举行国内(网上订购)机票3-8折优惠,国外(网上订购)机票5-8.5折优惠。
   如有任何疑问欢迎拨打服务热线,咨询热线:⊙4006-55-5870⊙√(网上改签服务)。
   热线服务时间:周一~周日 08:00-16:00 (早) 16:00-00:00 (晚)。
1、我们承诺提供给您的是真实的信息。
2、我们承诺为您提供公平,公正,透明的交易平台。
3、我们承诺在您需要的时候能够快捷地找到我们,我们始终在您身边。
4、我们承诺用公平公正的态度处理您的交易纠纷,保障您在机票改签过程中的权益,以及机票退票过程中的利益。
特别声明:
1、请遵守本公司的规章及制度。
2、凡是办理业务的用户均要遵守手续流程。  
3、凡是办理订票业务的用户必须提供个人真实信息。
4、凡是办理退(换)票业务的用户必须遵守手续流程。
   航空退票中心客服热线:⊙4006-55-5870⊙√
   受理业务: (1)网上机票销售。  (2)网上机票预订服务。 (3)酒店预订服务。 (4)网上退票服务。
   近期我公司将举行国内(网上订购)机票3-8折优惠,国外(网上订购)机票5-8.5折优惠。
   如有任何疑问欢迎拨打服务热线,咨询热线:⊙4006-55-5870⊙√(网上机票退票服务)。
   热线服务时间:周一~周日 08:00-16:00 (早) 16:00-00:00 (晚)。
1、我们承诺提供给您的是真实的信息。
2、我们承诺为您提供公平,公正,透明的交易平台。
3、我们承诺在您需要的时候能够快捷地找到我们,我们始终在您身边。
4、我们承诺用公平公正的态度处理您的交易纠纷,保障您在改签机票过程中的权益,以及机票退票过程中的利益。
特别声明:
1、请遵守本公司的规章及制度。
2、凡是办理业务的用户均要遵守手续流程。  
3、凡是办理订票业务的用户必须提供个人真实信息。
4、凡是办理退(换)票业务的用户必须遵守手续流程。
中国人的春节也是韩国最大的传统节日之一。作为一名嫁在中国的韩国媳妇,我已在北京学习并生活几年,每到春节来临,在婆家的我都会分外地思念故乡韩国,想念韩国过年时的情景和那里的家人。
韩国是一个非常遵从传统的国度,春节就是以祖先崇拜和孝思想为基础的节日,是祭祖祈愿家庭平安的一天。今天,春节也被现代人赋予了新的含义,那就是让人们从都市生活的紧张节奏中暂时解脱出来,得到片刻的宁静与快乐。所以,春节到韩国你的所到之处都会充满欢乐和吉祥的气氛。
韩国春节的传统风俗有很多,有岁妆、岁画、福笊篱、赶夜光鬼等等传说。至今流传下来的习俗有祖先祭拜、岁拜、德谈、“掷木四”和跳板等习俗。中国人春节都要吃年糕,韩国人春节也有专门讲究吃的食品,统称为“岁餐”。流传至今最具代表性的春节料理是“米糕片汤”。古代的韩国人崇尚太阳,白色的小圆状米糕片就代表着太阳,正月初一早晨吃米糕片汤代表着迎接太阳的光明。另外依照原始的宗教信仰,也代表着辞旧迎新、万物更生复活之际的严肃和清洁。以前做米糕片汤的汤是用野鸡汤熬成,现在野鸡难得,因此改用牛肉或鸡肉汤代替。中部和北部地区还喜欢在米糕片汤里加入山鸡肉、绿豆芽、蘑菇和泡菜为馅的饺子。此外,每个家庭还会准备蜜糯油果、桂皮汤、八宝饭和肉片等食品接待前来拜年的亲朋好友
                                                         
                                                           中国航空网   版权所有    2010年  客服电话:⊙4006-55-5870⊙√
都妹妹服务|成都妹妹上门服务|ww.028zxs.com成都是你来就不想走的城市,不关是成都妹妹服务成都小姐服务成都学生妹妹服务,让你留恋往返,解除你的一夜疲劳,风骚的少妇,让忘记烦劳:让你感受到成都的夜生活,
    保证质量的:
我们是给你送来的,我不想白跑和浪费大家的时间,所以我会根据你的要求给你送我这里最好的2-3个妹子上门你挑选,满意就要,不满意就不要,或者是给你换,都是可以的,
安全问题:
   我们都是做长期生意的,我们有网 站和电话号码,你随时打电话都能够联系上我们的,所以我们犯不着,因为你点点钱,有其他任何的想法,这一点,请客户,你放一百个心。你的满意就是我们的宗旨:
卫生有保证:
   我这里大部分,都是在校的学生妹子,或者兼职的学生妹妹。都是相当爱干净和讲卫生的,学生妹妹,每个月都定期的体检,让你玩得开心,
怎么交易:
  地方都是你客户自己找地方,无论是家里,还是公司,车里 ,宾馆,酒店,都是可以包上门服务,让你方便快捷
     注:本公司,一律不提供照片和视频。有照片都是属于参考照片而已。因为兼职的学生妹。或者是少妇,公司白领。因为隐私问题,是不方便,提供照片和视频:请广大,客户,谅解。。


v都妹妹服务|成都妹妹上门服务|ww.028zxs.com
注:本公司,一律不提供照片和视频。有照片都是属于参考照片而已。因为兼职的学生妹。或者是少妇,公司白领。因为隐私问题,是不方便,提供照片和视频:请广大,客户,谅解。。
近期由陈凯歌执导的《软文发布》在香河片场拍摄正酣。而昨日,黄晓明绯闻女友Angelbaby低调现身拍摄现场探班。在片场,Angelababy软文发布与黄晓明互动频频,二人更甜蜜分吃橙子和樱桃,其亲密关系可见一斑。

  黄晓明和Angela baby软文发布从去年下半年就已经传出绯闻,今年以来更是多次被拍到在一起逛街。不过,两人对此都回应跟对方是普通朋友关系。不过昨日Angelbaby低调现身《软文发布》片场,身穿一身黑衣。恰好黄晓明拍摄的镜头告一段落,身着戏服来到化妆台旁。Angel baby软文发布马上站起来迎过去,脸上还带着微笑,态度十分亲昵。和Angelababy交谈几句后,黄晓明干脆还把Angelababy带到导演陈凯歌和葛优前面,介绍他们认识。

  似乎在剧组中,二人的情侣关系已经不是什么秘密。但Angela baby软文发布仍然表现的极为警惕,只要面前有人举起摄影机或者手机,哪怕不是对着她,她也会扭头躲过镜头,就是用纸遮住头部。真钱扎金花

易发棋牌
祝 《赵氏孤儿》圆满成功。

更多精彩,尽在 大发扑克
返回列表