<?php
// 上传文件的接收或者处理都会经过php.ini配置文件
// file_uploads = on /off 文件上传开启/ 关闭
// upload_tmp_dir = 'D:/wamp/tmp' 指定临时文件存放目录
// upload_max_filesize = 2M 上传最大文件大小
// post_max_size = 8M post传输最大大小
//
// 注意点: 若想传输大文件的话: post_max_size > upload_max_filesize
// 判断顺序: 先判断post 在判断upload
// error 1: 上传文件超过了php.ini 中 upload_max_filesize的范围
var_dump($_FILES);
// 1. 判断错误
if(key($_FILES) == null){
echo '洗洗睡吧';
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}
// error = 0 代表上传成功
if( $_FILES['icon']['error'] > 0){
switch($_FILES['icon']['error']){
case '1':
echo '你上传的太大了,我受不了了,换个小点的';
break;
case '2':
echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case '3':
echo '文件只有部分被上传';
break;
case '4':
echo '没有文件被上传';
break;
case '6':
echo '找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进';
break;
case '7':
echo '文件写入失败。PHP 5.1.0 引进。';
break;
}
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}
// 2. 判断文件类型
// 获取后缀名
$type = strtok($_FILES['icon']['type'],'/');
var_dump($type);
// 定义允许类型
$allow_type = array('image','text');
// 判断类型是否符合
if( !in_array($type, $allow_type) ){
echo '不合法的文件类型';
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}
// 给新文件取新名字
$filename = '20_'.date('Ymd').uniqid().$_FILES['icon']['name'];
// 设置上传存储目录
$dir = './uploads/';
$dir .= date('Y').'/';
$dir .= date('m').'/';
$dir .= date('d').'/';
// 判断存储目录是否存在
if( !file_exists($dir)){
// 0777 代表最大权限
mkdir($dir, '0777', true);
}
// 判断文件是否从 http post上传的
if( !is_uploaded_file($_FILES['icon']['tmp_name'])){
echo '小伙子,你想走偏门上门,没门';
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}
// 移动文件到指定 存储目录中
if( move_uploaded_file($_FILES['icon']['tmp_name'], $dir.$filename) ){
echo '上传成功';
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}else{
echo '上传失败';
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['HTTP_REFERER'].'">';
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>update</title>
</head>
<body>
<form action="5.php.ini.php" method='post' enctype='multipart/form-data'>
头像: <input type="file" name='icon'>
<input type="submit">
</form>
</body>
</html>
网友评论