/**
* 文件上传
* @param array $files 要上传的文件列表(通常是$_FILES数组)
* @param array $setting 文件上传配置
* @param string $driver 上传驱动名称
* @param array $config 上传驱动配置
* @return array 文件上传成功后的信息
*/
public function upload($files, $setting, $driver = 'Local', $config = null){
/* 上传文件 */
$setting['callback'] = array($this, 'isFile');
$setting['removeTrash'] = array($this, 'removeTrash');
$Upload = new Upload($setting, $driver, $config);
$info = $Upload->upload($files);
$image = new \Think\Image();
if($info){ //文件上传成功,记录文件信息
foreach ($info as $key => &$value) {
/* 已经存在文件记录 */
if(isset($value['id']) && is_numeric($value['id'])){
continue;
}
/* 记录文件信息 */
//大图
$value['path'] = substr($setting['rootPath'], 1).$value['savepath'].$value['savename']; //在模板里的url路径
$image->open('./'.$value['path']);
//中图
//按照原图的比例生成一个最大为150*150的缩略图并保存为:'m'.$value['savename']
$image->thumb(450, 450)->save('./'.substr($setting['rootPath'], 1).$value['savepath'].'middle_'.$value['savename']);
$value['middle'] = substr($setting['rootPath'], 1).$value['savepath'].'middle_'.$value['savename'];
//小图
$image->thumb(150, 150)->save('./'.substr($setting['rootPath'], 1).$value['savepath'].'small_'.$value['savename']);
$value['small'] = substr($setting['rootPath'], 1).$value['savepath'].'small_'.$value['savename'];
//图片标题
$title_array = explode('.', $value['name']);
$value['title'] = $title_array[0];
if($this->create($value) && ($id = $this->add())){
$value['id'] = $id;
} else {
//TODO: 文件上传成功,但是记录文件信息失败,需记录日志
unset($info[$key]);
}
}
return $info; //文件上传成功
} else {
$this->error = $Upload->getError();
return false;
}
}
看到上面的代码,那我们只需要在picture表中增加middle,small两个字段即可。
如果有别的需求自行扩展即可。
发表评论 取消回复