
上传文件后效果如下:

每一个上传文件都有name、type、size、tmp_name等信息。文件上传后,这些文件相关信息存在FILES这个数组变量。_FILES[“myfile”][“name”]相当于一个多维数组的访问,FILES先获取表单名称为myfile的input上传的文件数据,然后再访问name、type、size、error等数据。_FILES["myfile"]["error"]用来处理文件没有正常上传的情况,例如超过限定上传的文件大小。如果FILES[“myfile”][“error”]=0,表示文件正常上传。_FILES[“myfile”][“error”]>0表示文件没有正常上传。
FILES[“myfile”][“error”]=1上传文件超过服务器限定的值,比如超过服务器空间大小。_FILES[“myfile”][“error”]=2 超过浏览器限定上传的值 $_FILES[“myfile”][“error”]=3文件只有部分被上传
FILES[“myfile”][“error”]=4没有文件本上传。_FILES[“myfile”][“error”]还可以为5、6、7、8,这里不做深究,只需知道其大于0时就意味这文件上传出错即可。
上传限制
通常情况下,服务器通常会限制服务器上传文件的大小或者类型。我们在上面php代码的基础上添加对上传文件代码的限制。
先熟悉几个函数用法:
explode()函数用于分割字符串,例:explode(“.”,”aaa.HTML”)就是在点的位置将这个字符串分成”aaa”和”HTML”两个字符串,这两个字符串按顺序存储在同一个数组中。
end()获取数组中最后一个元素的值。
in_array()在数组中查找某个元素,看是否存在,存在返回为true,不存在返回为false。
<?php
//第一步:明确服务器规定上传至服务器的文件类型。这里我们只允许上传以下类型的图片。
$allowedExts = array("gif", "jpeg", "jpg", "png");// 允许上传的图片后缀
//第二部:获取上传的文件名称,通过explorde()函数将其分割成字符串形式的数组。
$temp = explode(".", $_FILES["myfile"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp); // end函数用于获取数组中最后一个元素的值。
//第三步:列出上传文件需要满足的条件
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES[myfile"]["type"] == "image/jpg")
|| ($_FILES["myfile"]["type"] == "image/pjpeg")
|| ($_FILES["myfile"]["type"] == "image/x-png")
|| ($_FILES["myfile"]["type"] == "image/png"))
&& ($_FILES["myfile"]["size"] < 204800) // 小于 200 kb
&& in_array($extension, $allowedExts))
//in_array表示在$allowedExts数组中查找$extension这个字符串
{
if ($_FILES["myfile"]["error"] > 0)
{
echo "错误:: " . $_FILES["myfile"]["error"] . "<br>";
//举个例子服务器空间不足,文件只能上传部分就会出现错误。
}
else
{
echo "上传文件名: " . $_FILES["myfile"]["name"] . "<br>";
echo "文件类型: " . $_FILES["myfile"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["myfile"]["tmp_name"] . "<br>";
}
}
else
{
echo "非法的文件格式";
}
?>







