目录
配置项 | 说明 |
file_uploads |
on
为 开启文件上传功能,
off
为关闭
|
post_max_size |
系统允许的
POST
传参的最大值 ,默认
8M
|
upload_max_filesize |
系统允许的上传文件的最大值 ,默认
2M
|
menory_limit |
内存使用限制 ,默认
256M
|
?可以根据自己的需求进行修改
错误码 | 说明 |
0 | 无误,可以继续进行文件上传的后续操作 |
1 | 超出上传文件的最大限制,
upload_max_filesize = 100M php.ini
中设置,一般默认为
100M
。可根据项目中的实际需要来修改
|
2 | 超出了指定文件大小,根据项目目的业务需求指定上传文件的大小限制 |
3 | 只有部分的文件被上传 |
4 | 文件没有被上传 |
6 | 找不到临时文件夹,可能目录不存在或没权限 |
7 | 文件写入失败,可能磁盘满了或没有权限 |
错误类型 | 说明 |
E_ERROE |
警告,问题比较严重。但是还会继续向下运行
|
E_NOTICE
|
提示,有些小问题不会影响到程序。常发生在项目未定义
|
E_PARSE
|
编译时语法解析错误。解析错误仅仅由分析器产生。
|
E_ALL
|
所有的错误
|
E_STRICT
|
启用
PHP
对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
|
E_DEPRECATED
|
启用后将会对在未来版本中可能无法正常工作的代码给出警告。
|
error?? 最严重,必须要解决。不然程序无法继续向下执行warning? 也很重要。但也必须要解决。如果明确的、故意的可以不用处理。notice 可以不用管。但是在高标准要求的项目中也必须要解决。因为notice会影响到PHP的????????????执行效率。通常发生在函数未定义等。parse? 错误,是指语法错写错了,必须要解决,代表全部类型的所有错误。
前端代码
<!DOCTYPE html>
<html>
<head>
</head>
<meta charset="UTF-8">
<title>文件上传</title>
<body>
<div>
<div>欢迎来到上传文件系统</div>
<form action='upload.php' method='post' enctype='multipart/form-data'>
请选择文件:<input type='file' name='image'>
点击上传:<input type='submit'>
</form>
</div>
</body>
</html>
php代码
<?php
header("Content-Type: text/html; charset=utf-8");
$a = dirname(__FILE__);//获取当前文件所在目录
$f = $_FILES['image'];//获取上传文件信息,数组型
//var_dump($f);
$t = time(); //获取时间戳
//因为上传的文件会作为临时文件,路径在tmp_name,
//所以需要进行移动到我们需要上传到的文件夹下
move_uploaded_file($f['tmp_name'], $a.'\\uploads\\'.$t.$f['name']);//移动后,以时间戳重命名
?>
解决上传文件名为中文乱码情况。 对上传类型进行限制
<?php
header("Content-Type: text/html; charset=utf-8");
$a = dirname(__FILE__);
$f = $_FILES['image'];//获取上传文件信息,数组型
var_dump($f);
//对上传文件大小进行限制,单位字节
if($f['size'] > 500000){
echo "文件太大,请重新选择".'<br>';
exit;
}
//对上传文件类型进行限制,如一些常用图片格式
$types = array('image/jpeg','image/png','image/gif');
if(!in_array($f['type'], $types)) {
echo "只支持上传jpeg/png/gif格式的文件".'<br>';
exit;
}
//查看上传返回码,0代表成功
$error_code = $f['error'];
if($error_code != 0) {
echo "上传失败".'<br>';
exit;
}
$t = time(); //获取时间戳
$name = $f['name'];//获取上传的文件名
$new_name = iconv('utf-8','gbk',$name);//对文件名进行编码
//判断文件是否已上传,把时间戳去掉
if(file_exists($a.'\\uploads\\'.$new_name)){
echo '文件已存在';
exit;
}
//因为上传的文件会作为临时文件,路径在tmp_name,
//所以需要进行移动到我们需要上传到的文件夹下
move_uploaded_file($f['tmp_name'], $a.'\\uploads\\'.$t.$new_name);//移动后,以时间戳重命名
echo "上传成功".'<br>';
?>