下面介绍一下使用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。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
本文介绍了一段使用PHP实现文件上传的代码,并详细解释了关键部分的作用和参数含义,包括错误代码解释、文件类型验证、上传过程等。
2302

被折叠的 条评论
为什么被折叠?



