Local.class.php
3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think\Upload\Driver;
class Local
{
/**
* 上传文件根目录
*
* @var string
*/
private $rootPath;
/**
* 本地上传错误信息
*
* @var string
*/
private $error = ''; // 上传错误信息
/**
* 构造函数,用于设置上传根路径
*/
public function __construct($config = null)
{}
/**
* 检测上传根目录
*
* @param string $rootpath
* 根目录
* @return boolean true-检测通过,false-检测失败
*/
public function checkRootPath($rootpath)
{
if (! (is_dir($rootpath) && is_writable($rootpath))) {
$this->error = '上传根目录不存在!请尝试手动创建:' . $rootpath;
return false;
}
$this->rootPath = $rootpath;
return true;
}
/**
* 检测上传目录
*
* @param string $savepath
* 上传目录
* @return boolean 检测结果,true-通过,false-失败
*/
public function checkSavePath($savepath)
{
// 检测并创建目录
if (! $this->mkdir($savepath)) {
return false;
} else {
// 检测目录是否可写
if (! is_writable($this->rootPath . $savepath)) {
$this->error = '上传目录 ' . $savepath . ' 不可写!';
return false;
} else {
return true;
}
}
}
/**
* 保存指定文件
*
* @param array $file
* 保存的文件信息
* @param boolean $replace
* 同名文件是否覆盖
* @return boolean 保存状态,true-成功,false-失败
*/
public function save($file, $replace = true)
{
$filename = $this->rootPath . $file['savepath'] . $file['savename'];
// 不覆盖同名文件
if (! $replace && is_file($filename)) {
$this->error = '存在同名文件' . $file['savename'];
return false;
}
// 移动文件
if (! move_uploaded_file($file['tmp_name'], $filename)) {
$this->error = '文件上传保存错误!';
return false;
}
return true;
}
/**
* 创建目录
*
* @param string $savepath
* 要创建的穆里
* @return boolean 创建状态,true-成功,false-失败
*/
public function mkdir($savepath)
{
$dir = $this->rootPath . $savepath;
if (is_dir($dir)) {
return true;
}
if (mkdir($dir, 0777, true)) {
return true;
} else {
$this->error = "目录 {$savepath} 创建失败!";
return false;
}
}
/**
* 获取最后一次上传错误信息
*
* @return string 错误信息
*/
public function getError()
{
return $this->error;
}
}