前面写过一篇文章,也是关于这个的,不过我不满意,所以重新写一遍。
在这里我不会按照这个类逐行解释过程了,那样效率不高,而且也没有什么用,所以这里就先讲一下他的工作原理,再来就是使用的方法了及其过程了。
Part 1:Upload原理
其实原理很简单,就是借用了php的finfo进行文件的处理,再来使用ThinkPHP下的Library下的Upload下的local.class.php进行上传文件路径的管理。
类似就是下面的方式:
- finfo:进行上传文件的处理
- local.class.php:进行上传路径的管理
剩下的部分就是保证其中各个参数的正确性。
Part 2:传入参数处理过程
传入的参数有以下这些:
mimes
- array类型
其实传入字符串也可以的,多个值之间使用逗号隔开,至于这个值是干嘛的,自己百度mime。这个其实就是一个判断值,判断之后接受到的值在不在你设置的这个array内部:
/**
* 检查上传的文件MIME类型是否合法
* @param string $mime 数据
*/
private function checkMime($mime) {
return empty($this->config['mimes']) ? true : in_array(strtolower($mime), $this->mimes);
}
maxSize
- 整数类型
作用跟mimes一样,就是起一个判断的作用,文件最大上传大小,好像单位是bit。
/**
* 检查文件大小是否合法
* @param integer $size 数据
*/
private function checkSize($size) {
return !($size > $this->maxSize) || (0 == $this->maxSize);
}
exts
- array类型
跟mimes一样,也可以输入字符串,用逗号隔开。起判断作用,文件的后缀。
/**
* 检查上传的文件后缀是否合法
* @param string $ext 后缀
*/
private function checkExt($ext) {
return empty($this->config['exts']) ? true : in_array(strtolower($ext), $this->exts);
}
autoSub
- true或者false类型
在设置了rootPath和savePath之后,还会有子目录,这个子目录的默认格式是下一个参数,这个再说,而这里只是一个标志,表示是否开启子目录。