文件上传相关问题
1.文件扩展名的简单获取
string strrchr(string $haystack,mixed $needle)
在参数haystack中查找参数needle,找到后,返回之后的字符串。
2.避免文件名重复
对于同一网站的保存路径,不同用户上传的文件可能重名,为避免同名文件相互覆盖,需给文件重命名,使用当前日期时间及随机数,拼接文件扩展名来生成。
3.大小限定
临时文件单位为字节,比较时需转换单位。
4.文件类型限定(MIME类型)
网站支持的文件类型一般是固定的,需要判断上传文件的类型。由于文件本身的扩展名可以修改,修改文件的扩展名后,上传之后类型也发送改变。不能通过上传之后的扩展名来判断文件类型,需判断MIME类型。MIME是描述消息内容类型的因特网标准。
在php.ini开启php_fileinfo.dll扩展,保存重启Apache
打开fileinfo资源
finfo_open(FILEINFO_MIME_TYPE);
该函数执行成功返回资源型,失败返回false
读取上传文件的MIME类型,返回MIME类型字符串
finfo_file(文件资源,临时文件名);
判断上传文件MIME类型是否是网站支持的
bool in_array(mixed $needle,array $haystack)
使用in_array函数判断,下图中参数mime为上传文件的MIME类型,参数mimeArr为网站支持的MIME类型