PHP文件上传
上传表单的HTML
```
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
上传文件:
<input type="file" name="userfile" />
<input type="submit" value="上传" />
</form>
TYPE=”multipart/form-data”,这里是固定写法,否则文件上传失败
ACTION=”upload.php“,
定义要处理上传的程序文件路径
METHOD=”post”,
定义传输方式为POST,一般情况下Form提交数据都设置为POST
<input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000”>
,这是一个隐藏域,定义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面.而且这里定义的值不 能超过在php.ini 文件中
upload_max_filesize设置的值,否则没有意义了.(注意:
MAX_FILE_SIZE的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini设置中的上传文件最大值,是不会 失效的。但是最好还是在表单中加上
MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。)
,`这是文件上传域,Type属性必须设置为file,但Name属性可以自定义,这个值会在代码文件中使用.
define('MAX_SIZE',1000000);//创建一个常量
define('URL',dirname(__FILE__).'\uploads');
//判断上传的图片
$fileMimes = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
if (is_array($fileMimes)) {
if (!in_array($_FILES['userfile']['type'],$fileMimes)) {
echo "<script>alert('本站只允许jpg、gif、png图片!');history.back();</script>";
exit;
}
}
//判断上传错误的问题出在哪
if ($_FILES[' userfile']['error'] > 0) {
switch ($_FILES[' userfile']['error']) {
case 1: echo "<script>alert('上载文件的大小超出了约定值。文件大小的最大值是PHP配置文件中指定的该指令是 upload_max_filesize'); history.back();</script>";
break;
case 2: echo "<script>alert('表示上载文件大小超出了HTML表单的MAX_FILE_SIZE元素所指定的最大值。'); history.back();</script>";
break;
case 3: echo "<script>alert('部分被上传');history.back();</script>";
break;
case 4: echo "<script>alert('没有任何文件被上传');history.back();</script>";
break;
}
exit;
}
//判断上传配置的大小
if ($_FILES['userfile']['size'] > MAX_SIZE) {
echo "<script>alert('上传文件不得超过2M');history.back();</script>";
exit;
}
//判断目录是否存在
if (!is_dir(URL)) {
mkdir(URL,0777); //如果没有创建目录
}
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
//(is_uploaded_file($_FILES['userfile']['tmp_name'])) 是用来判断能否能找到上传的文件
if (!@move_uploaded_file($_FILES['userfile']['tmp_name'],URL.'/'.$_FILES['userfile']['name']))
//这个函数是用来移动的其中'URL'是可以换成你所定义的
//就在这里移动了。
//第一个参数,写上临时文件的地址,
//第二个参数,第二个参数写上你要存放的地址
//如果想屏蔽掉警告,直接加上@
{
//如果移动失败,就失败
echo "<script>alert('移动失败');history.back();</script>";
exit;
}
} else {
echo "<script>alert('临时文件夹找不到上传的文件');history.back();</script>";
exit;
}
?>
其中最主要的两个函数就是:
1.is_uploaded_file()
2.move_uploaded_file()