PHP的文件上传功能

本文介绍了一段使用PHP实现文件上传的代码,并详细解释了关键部分的作用和参数含义,包括错误代码解释、文件类型验证、上传过程等。

下面介绍一下使用PHP上传文件的一段代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>规范化的文件上传</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="830" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3"><img src="images/bg_01.jpg" width="830" height="133" /></td>
  </tr>
   <form action="" method="post" enctype="multipart/form-data">
  <tr>
    <td width="193" rowspan="4"> </td>
    <td width="423" height="50">选择上传文件:
      <input type="file" name="up_picture"/>
      <input type="hidden" name="MAX_FILE_SIZE" value="10000" /></td>
    <td width="214" rowspan="4"> </td>
  </tr>
  <tr>
    <td height="30" align="center"><span class="STYLE1">上传图片格式为(jpg)、大小为(2M)</span></td>
  </tr>
  <tr>
    <td height="50" align="center"><input type="image" name="imageField2" src="images/bg_09.jpg" />
        <input type="image" name="imageField3" src="images/bg_11.jpg" /></td>
  </tr>
    </form>
  <tr>
    <td height="70">
<?php
if(!empty($_FILES[up_picture][name])){		//判断上传内容是否为空
	if($_FILES['up_picture']['error']>0){		//判断文件是否可以上传到服务器
		echo "上传错误:";
		switch($_FILES['up_picture']['error']){
			case 1:
				echo "上传文件大小超出配置文件规定值";
			break;
			case 2:
				echo "上传文件大小超出表单中约定值";
			break;
			case 3:
				echo "上传文件不全";
			break;
			case 4:
				echo "没有上传文件";
			break;	
		}
	}else{
		list($maintype,$subtype)=explode("/",$_FILES['up_picture']['type']);
			if($maintype!="image" || $subtype!="pjpeg"){
			echo "上传文件格式不正确";
		}else{	
			if(!is_dir("./upfile/")){				//判断指定目录是否存在
				mkdir("./upfile/");					//创建目录
			}
			$path='./upfile/'.time().strtolower(strstr($_FILES['up_picture'][name],"."));		//定义上传文件名称和存储位置
			if(is_uploaded_file($_FILES['up_picture']['tmp_name'])){	//判断文件是否是HTPP POST上传
				if(!move_uploaded_file($_FILES['up_picture']['tmp_name'],$path)){	//执行上传操作
					echo "上传失败";
				}else{
					echo "文件:<span class='STYLE1'>".time().strtolower(strstr($_FILES['up_picture'][name],"."))."</span>  上传成功,大小为:<span class='STYLE1'>".$_FILES['up_picture']['size']."</span> 字节";	
				}
			}else{
				echo "上传文件:<span class='STYLE1'>".$_FILES['up_pictute']['name']."</span>不合法!";
			}
		}
	}
}
?>
</td>
  </tr>
  <tr>
    <td colspan="3"><img src="images/bg_14.jpg" width="830" height="30" /></td>
  </tr>
</table>
</body>
</html>




其中$_FILES[filename][error] 主要是存储与文件上传相关的错误代码:

        0:表示没有错误,上传成功;

        1:表示上传的文件的大小超过了PHP配置文件指令upload_max_filesize选项限制的值;

        2:表示上传文件的大小超出了HTML表单中max_file_size选项所指定的值;

        3:表示文件只被上传了一部分;

        4:表示没有上传任何文件。

is_upload_file()判断文件是否是通过 HTTP POST 上传的

bool  is_uploaded_file (  string $filename )

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值