?检测上传文件大小
?检测类型
?检测是否够为真实的图片类型
?检测上传目录是否存在,不存在的情况下再创建
?生成唯一的文件名 防止覆盖
?检测是否是通过http-post方式上传的
加标志目的是否需要检测图片类型
加标志flag,检测是否为真实图片类型
上传不是真实扩展名的文件该怎么办
检测是否是真实的图片,用getimagesize()
chmod改变权限
如果目录不存在,则创建文件
把路径删了,会产生错误警告,所以加错误抵制符,不让用户看到
1111111111111111
echo,exit测试
产生唯一的文件名$uniName
路径信息变量$destination
将临时文件移动
判断EMP的文件是不是通过HPPT POST上传上来的
允许上传文件定义一个数组
二种方式获得扩展名end,pathinfo
设定最大,$maxSize要算出字节数
匹配错误信息
在服务端做限制
对于会程序的人来说,客户端做限制起不了什么作用
//防止文件名唯一
$uniName=md5(uniqid(microtime(true),true)).'.'.$ext;
生成唯一的文件名
md5(uniqid(microtime(true),true))
move_uploaded_file会先检测是否是合法的上传文件
mkdir、chmod
allowExt
strtolower(end(explode('.', $fileInfo['name']);
is_uploaded_file($fileInfo['tmp_name']);
$ext = pathinfo($fileInfo['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $allowExt)) {
exit('invalid file type');
}
md5(uniqid(microtime(true),true)).'.'.$ext;
if (!file_exists($path)) {
mkdir($path, 0777, true);
chmod($path, 0777);
}
PHP调试时print_r ,var_dump的区别https://blog.csdn.net/renzhenhuai/article/details/9317341
使用@时的实际操作为:
保存当前的error_reporting值, 并设置error_reporting(0); //关闭错误输出
恢复之前保存的error_reporting值.
@include(
文件上传三步骤:本地文件---->上传到服务器(此时是临时文件)------>移动到服务器指定文件夹下;;这才叫上传成功
文件上传:move_uploaded_file($tmp_name,"uploads/".$filename);函数是移动剪切;copy($tmp_name,"uploads/".$filename);函数是复制
文件上传:move_uploaded_file($tmp_name,"uploads/".$filename);函数只能移动通过HTTP POST方式上传上来的文件;
copy($tmp_name,"uploads/".$filename);函数则没有这方面的限制