|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我的这套线路可能跟许多学习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($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
{
$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png');
$FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG');
$file_path = $upload_dir.$targetname;
if(!is_dir($upload_dir))
{
if(!mkdir($upload_dir))
die("文件上传目次不存在而且没法创立文件上传目次");
if(!chmod($upload_dir,0755))
die("文件上传目次的权限没法设定为可读可写");
}
if($size>$MAX_SIZE)
die("上传的文件巨细超越了划定巨细");
if($size == 0)
die("请选择上传的文件");
if(!in_array($type,$FILE_MIMES) !in_array($ext,$FILE_EXTS))
die("请上传合适请求的文件类型");
if(!move_uploaded_file($tmp_name, $file_path))
die("复制文件掉败,请从头上传");
switch($error)
{
case 0:
return ;
case 1:
die("上传的文件超越了 php.ini 中 upload_max_filesize 选项限制的值");
case 2:
die("上传文件的巨细超越了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
case 3:
die("文件只要局部被上传");
case 4:
die("没有文件被上传");
}
} 参数申明
$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'][0],代表第一个文件的相干文件信息,依此类推,其他也一样。
总结
此函数是PHP文件上传中最复杂的中心代码,图片上传只是个中一种,只需求修正或扩大$FILE_MIMES和$FILE_EXTS数组的相干信息,便可完成其他类型的文件上传功效。在函数的核心,依据本人的需求编写相干的其他代码便可完成其他功效,好比和数据库的联系关系等。
注:PHP网站开辟教程-leapsoul.cn版权一切,转载时请以链接模式注明原始出处及本声明,感谢。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。 |
|