第二个灵魂 发表于 2015-2-3 23:36:13

PHP编程:PHP文件上传功效代码实例教程

我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。     在PHP网站开辟中,PHP法式若何完成文件上传功效,一向是老手的课题。并且文件上传功效普通都用得着,好比图片上传。明天就联合详细代码实例和具体注解和人人分享若何编写PHP文件上传代码,合适php初学者进修。
  PHP代码实例次要讲述的是图片上传,看懂法式后你可以修正相干文件类型就能够完成其他文件的上传功效。
编程情况
  PHP5.2.4,根基上PHP4.3以上版本,此代码都可使用
筹办任务
  反省upload_tmp_dir项
  假如PHP的开辟情况是自行搭建的,你需求在编写文件上传法式前编纂php.ini文件,找到并编纂upload_tmp_dir选项,此项用来设定文件上传至办事器时的一时文件夹,好比upload_tmp_dir = E:/phpos/uploads,然后再重启Apache。假如PHP的开辟情况利用的是傻瓜式一键装置包,普通upload_tmp_dir都是设定好了的,你也能够用phpinfo()函数检查下设置装备摆设。
  编写一个upload文件,设定文件上传表单
1
2
3
4
5
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">  
<input type="submit" value="上传文件">
</form>   注重
  1、表单中enctype=”multipart/form-data”必需指定,以便让办事器晓得文件带有惯例的表单信息。
  2、必需有一个可以设置上传文件最大长度的表单区域,即答应上传文件的最大值(按字节盘算),它是埋没值域,即max_file_size,经由过程设置其Value(值)可以限制上传文件的巨细,防止用户在花工夫守候上传大文件以后才发明该文件太大了的费事。然而普通他人可以绕过这个值,所以平安起见,最好是在php.ini文件中设置装备摆设upload_max_filesize选项,设定文件上传的巨细,默许是2M。
文件上传法式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function uploadfile&#40;$type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir&#41;
{
   $MAX_SIZE = 2000000;
   $FILE_MIMES = array&#40;'image/pjpeg','image/jpeg','image/jpg','image/gif','image/png'&#41;;
   $FILE_EXTS = array&#40;'.jpg','.gif','.png','.JPG','.GIF','.PNG'&#41;;

   $file_path = $upload_dir.$targetname;
   
   if&#40;!is_dir&#40;$upload_dir&#41;&#41;
   {
         if&#40;!mkdir&#40;$upload_dir&#41;&#41;
             die&#40;"文件上传目次不存在而且没法创立文件上传目次"&#41;;
         if&#40;!chmod&#40;$upload_dir,0755&#41;&#41;
             die&#40;"文件上传目次的权限没法设定为可读可写"&#41;;
   }
   
   if&#40;$size>$MAX_SIZE&#41;
         die&#40;"上传的文件巨细超越了划定巨细"&#41;;

   if&#40;$size == 0&#41;
         die&#40;"请选择上传的文件"&#41;;

   if&#40;!in_array&#40;$type,$FILE_MIMES&#41; !in_array&#40;$ext,$FILE_EXTS&#41;&#41;
         die&#40;"请上传合适请求的文件类型"&#41;;

   if&#40;!move_uploaded_file&#40;$tmp_name, $file_path&#41;&#41;
         die&#40;"复制文件掉败,请从头上传"&#41;;

   switch&#40;$error&#41;
   {
         case 0:
             return ;
         case 1:
             die&#40;"上传的文件超越了 php.ini 中 upload_max_filesize 选项限制的值"&#41;;
         case 2:
             die&#40;"上传文件的巨细超越了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"&#41;;
         case 3:
             die&#40;"文件只要局部被上传"&#41;;
         case 4:
             die&#40;"没有文件被上传"&#41;;
   }
} 参数申明
$type,$name,$size,$error,$tmp_name对应全局变量$_FILES中的相干变量,即:
$_FILES['userfile']['type']:文件的MIME类型,需求阅读器供应该信息的撑持,例如图片类型“image/gif”。
$_FILES['userfile']['name']:客户端文件的原称号。
$_FILES['userfile']['size']:已上传文件的巨细,单元为字节。
$_FILES['userfile']['tmp_name']:文件被上传后在办事端贮存的一时文件名。
$_FILES['userfile']['error']:和该文件上传相干的毛病代码,即
值:0:没有毛病产生,文件上传胜利。
值:1:上传的文件超越了 php.ini 中 upload_max_filesize 选项限制的值。
值:2:上传文件的巨细超越了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3:文件只要局部被上传。
值:4:没有文件被上传。
$ext:上传文件扩大名
$targetname:文件上传后的终究文件名
$upload_dir:上传至哪一个目次下,采取的是绝对途径
正文:
第3行~第6行:设定图片文件上传的巨细,和文件的MIME类型和扩大名,因为此代码为图片文件上传法式,所以两个数组中枚举了一切的图片类型,好比PNG,GIF,JEPG等。
第17行~第24行:假如文件是空的,size等于0;假如图片文件的扩大名或类型不符,则跳出。
第26行:move_uploaded_file函数的功效是将upload_tmp_dir设定的办事端一时目次中的文件移至由$file_path指定的文件,注重假如方针文件已存在则掩盖方针文件
若何上传多个文件?好比同时上传3个文件
只需将
1
<input name="userfile" type="file"> 改成
1
2
3
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file"> 对应的在挪用此函数时,$_FILES['userfile']['name'],代表第一个文件的相干文件信息,依此类推,其他也一样。
总结
  此函数是PHP文件上传中最复杂的中心代码,图片上传只是个中一种,只需求修正或扩大$FILE_MIMES和$FILE_EXTS数组的相干信息,便可完成其他类型的文件上传功效。在函数的核心,依据本人的需求编写相干的其他代码便可完成其他功效,好比和数据库的联系关系等。
  注:PHP网站开辟教程-leapsoul.cn版权一切,转载时请以链接模式注明原始出处及本声明,感谢。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。

小妖女 发表于 2015-2-4 03:30:06

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

仓酷云 发表于 2015-2-7 01:36:11

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

活着的死人 发表于 2015-2-19 09:35:10

做为1门年轻的语言,php一直很努力。

金色的骷髅 发表于 2015-3-1 15:47:51

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

山那边是海 发表于 2015-3-10 19:39:35

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

乐观 发表于 2015-3-17 09:10:50

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

变相怪杰 发表于 2015-3-19 18:56:29

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

灵魂腐蚀 发表于 2015-3-20 23:58:45

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

分手快乐 发表于 2015-3-26 01:46:12

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

飘飘悠悠 发表于 2015-4-1 15:12:28

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

再现理想 发表于 2015-4-5 22:09:33

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

谁可相欹 发表于 2015-4-6 06:38:21

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

老尸 发表于 2015-4-10 09:21:43

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

admin 发表于 2015-4-14 18:47:46

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

透明 发表于 2015-4-16 18:09:21

Ps:以上纯属原创,如有雷同,纯属巧合

愤怒的大鸟 发表于 2015-4-17 00:56:55

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。

精灵巫婆 发表于 2015-5-12 11:34:49

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

飘灵儿 发表于 2015-6-17 01:26:45

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
页: [1]
查看完整版本: PHP编程:PHP文件上传功效代码实例教程