今天在用ThinkPHP做图片上传的时候碰到”上传根目录不存在!请尝试手动创建:./Uploads/”的错误提示,原因是TP的Upload类默认上传配置里rootPath的默认值是’./Uploads/’,而官方文档上的例子里并没有说明这一点,导致很多人仿照官方例子,只配置了savePath而没有初始化rootPath。
Upload类默认上传配置如图:
解决方法:
实例化Upload上传类时同时初始化rootPath和设置savePath的路径,如:
$config = array(
'maxSize' => 3145728, // 设置附件上传大小,默认3M
'exts' => array('jpg', 'gif', 'png', 'jpeg'), // 设置附件上传类型
'rootPath' => './', // 设置根路径
'savePath' => 'Upload/image/' // 设置附件上传目录
);
// 实例化上传类
$upload = new ThinkUpload($config);
// 上传文件
$info = $upload->upload();
if(!$info) {
// 上传错误提示错误信息
$this->error('上传图片出错');
}else{
// 上传成功提示成功信息
$this->success('上传图片成功');
}
图片地址为:
$picture_url =
$config['rootPath'] . $info['picture']['savepath'] . $info['picture']['savename'];
// ./Upload/image/2014-11-25/54736004a045f.png