1
1
# 又拍云PHP SDK
2
2
![ build] ( https://travis-ci.org/upyun/php-sdk.svg )
3
3
4
- 又拍云存储PHP SDK,基于 [ 又拍云存储HTTP REST API接口] ( http://docs.upyun.com/api/rest_api/ ) 开发。
4
+ 又拍云存储PHP SDK,基于[ 又拍云存储 HTTP API 接口] ( http://docs.upyun.com/api/ ) 开发。SDK 包含了文件上传下载刷新等基本操作,以及图片、视频云处理等功能。
5
+
5
6
- [ 更新说明] (#update instructions)
6
7
- [ 使用说明] (#use instructions)
7
8
- [ 安装] ( #install )
8
- - [ 初始化UpYun] ( #init )
9
- - [ 示例] ( #usage )
10
- - [ 上传文件] (#upload file)
11
- - [ 上传图片] (#upload img)
12
- - [ 下载文件] (#download file)
13
- - [ 创建目录] ( #mkdir )
14
- - [ 删除目录或者文件] ( #delete )
15
- - [ 获取目录文件列表] (#file list)
16
- - [ 获取文件信息] (#file info)
17
- - [ 获取空间使用状况] (#bucket info)
18
- - [ 异常处理] ( #exception )
9
+ - [ 使用] ( #usage )
19
10
- [ 贡献代码] ( #contribute )
20
11
- [ 社区] ( #community )
21
12
- [ 许可证] ( #license )
22
13
23
14
<a name =" update instructions " ></a >
24
15
## 更新说明
16
+ #### 3.0.0
17
+
18
+ - 重写 API 接口,不兼容 2.x 版本
19
+ - 集合分块、刷新、视频预处理功能
25
20
26
21
#### 2.2.0
27
22
45
40
composer require upyun/sdk
46
41
```
47
42
48
- <a name =" init " ></a >
49
- ### 初始化UpYun
50
- ``` php
51
- require_once('vendor/autoload.php');
52
- $upyun = new UpYun('bucketname', 'operator_name', 'operator_pwd');
53
- ```
54
-
55
- 参数 ` bucketname ` 为空间名称,` operator_name ` 、` operator_pwd ` 为授权操作员的账号密码。
56
-
57
- 根据国内的网络情况,又拍云存储API目前提供了电信、联通网通、移动铁通三个接入点,在初始化的时候可以添加可选的第四个参数来指定API接入点。
58
-
59
- ``` php
60
- $upyun = new UpYun('bucketname', 'operator_name', 'operator_pwd', UpYun::ED_TELECOM);
61
- ```
62
-
63
- 接入点有四个值可选:
64
-
65
- * ` UpYun::ED_AUTO ` 根据网络条件自动选择接入点
66
- * ` UpYun::ED_TELECOM ` 电信接入点
67
- * ` UpYun::ED_CNC ` 联通网通接入点
68
- * ` UpYun::ED_CTT ` 移动铁通接入点
69
-
70
- 默认参数为自动选择API接入点。但是我们推荐根据服务器网络状况,手动设置合理的接入点已获取最佳的访问速度。
71
-
72
- ** 超时时间设置**
73
-
74
- 在初始化UpYun上传时,可以选择设置上传请求超时时间(默认30s):
75
- ``` php
76
- $upyun = new UpYun('bucketname', 'operator_name', 'operator_pwd', UpYun::ED_TELECOM, 600);
77
- ```
78
-
79
43
<a name =" usage " ></a >
80
- ## 示例
81
-
82
- * 示例代码中所有` bucketname ` ,` operator_name ` ,` operator_pwd ` 以及路径需要替换成实际环境的值,账户密码请注意保密*
83
-
84
- <a name =" upload file " ></a >
85
- ### 上传文件
44
+ ### 初始化
86
45
87
- 文件类空间可以上传任意形式的二进制文件
88
-
89
- ** 1.直接读取整个文件内容:**
90
46
``` php
91
- $upyun->writeFile('/path/to/server/file.ext', 'your file content', true);
92
- ```
47
+ require_once('vendor/autoload.php');
93
48
94
- ** 2.文件流的方式上传,可降低内存占用:**
95
- ``` php
96
- $file_handler = fopen('demo.png', 'r');
97
- $upyun->writeFile('/path/to/server/demo.png', $file_handler, true);
98
- fclose($file_handler);
49
+ use Upyun\Upyun;
50
+ use Upyun\Config;
51
+ $bucketConfig = new Config('yourBucketName', 'yourOperatorName', 'yourOperatorPwd');
52
+ $client = new Upyun($bucketConfig);
99
53
```
100
- ` writeFile() ` 第三个参数为可选,` true ` 表示自动创建相应目录,默认值为` false ` 。
101
- 文件空间上传成功后返回` true ` 。
102
- 如果上传失败,则会抛出异常。
103
-
104
- <a name =" upload img " ></a >
105
- ### 上传图片
106
- 图片可以上传到图片类空间或文件类空间
107
- * 图片空间上传的图片不能超过20M,图片` 宽*高*帧数 ` 不能超过` 2亿 `
108
- * 文件空间上传的图片不能超过1G
109
- * 建议站点图片上传到图片空间,便于在请求图片时可以生成自定义版本图片*
110
-
111
- ** 1.上传图片并创建缩略图:**
112
54
113
- ` writeFile() ` 方法第四个参数为数组类型可选参数,用来设置文件类型、缩略图处理。
114
- ``` php
115
- $opts = array(
116
- UpYun::X_GMKERL_THUMBNAIL => 'square' //创建缩略图
117
- );
55
+ 1 . 字符串写入又拍云服务器
118
56
119
- $fh = fopen('demo.png', 'r');
120
- $upyun->writeFile('/temp/upload_demo.png', $fh, true, $opts);
121
- fclose($fh);
122
57
```
123
- ` writeFile() ` 方法第四个参数可以设置的值还包括:
124
-
125
- * UpYun::CONTENT_TYPE
126
- * UpYun::CONTENT_MD5
127
- * UpYun::CONTENT_SECRET
128
- * UpYun::X_GMKERL_THUMBNAIL
129
- * UpYun::X_GMKERL_TYPE
130
- * UpYun::X_GMKERL_VALUE
131
- * UpYun::X_GMKERL_QUALITY
132
- * UpYun::X_GMKERL_UNSHARP
133
-
134
- 参数的具体使用方法,请参考[ 标准API上传文件] ( http://docs.upyun.com/api/rest_api/#_4 )
135
-
136
- * 图片空间上传成功后会返回一维数组,包含了图片信息,示例如下:
137
-
138
- ``` php
139
- array(
140
- 'x-upyun-width' => 2000,
141
- 'x-upyun-height' => 1000,
142
- 'x-upyun-frames' => 1
143
- 'x-upyun-file-type' => "JPEG"
144
- )
58
+ $client->write('/save/path', 'file content');
145
59
```
146
- 如果上传失败,则会抛出异常。
147
60
148
- <a name =" download file " ></a >
149
- ### 下载文件
61
+ 2 . 文件流写入又拍云服务器
150
62
151
- ** 1.直接读取文件内容:**
152
- ``` php
153
- $data = $upyun->readFile('/temp/upload_demo.png');
154
63
```
155
-
156
- ** 2.使用文件流模式下载:**
157
- ``` php
158
- $fh = fopen('/tmp/demo.png', 'w');
159
- $upyun->readFile('/temp/upload_demo.png', $fh);
160
- fclose($fh);
64
+ $file = fopen('/local/path/file', 'r');
65
+ $client->write('/save/path', $file);
161
66
```
162
67
163
- 直接获取文件时,返回文件内容,使用数据流形式获取时,成功返回` true ` 。
164
- 如果获取文件失败,则抛出异常。
165
-
166
- <a name =" mkdir " ></a >
167
- ### 创建目录
168
- ``` php
169
- $upyun->makeDir('/demo/');
170
- ```
171
- 目录路径必须以斜杠 ` / ` 结尾,创建成功返回 ` true ` ,否则抛出异常。
68
+ 3 . 上传图片并转换格式为 ` png ` ,详见[ 上传作图] ( http://docs.upyun.com/cloud/image/#_2 )
172
69
173
- <a name =" delete " ></a >
174
- ### 删除目录或者文件
175
- ``` php
176
- $upyun->delete('/demo/'); // 删除目录
177
- $upyun->delete('/demo/demo.png'); // 删除文件
178
70
```
179
- 删除成功返回` true ` ,否则抛出异常。注意删除目录时,` 必须保证目录为空 ` ,否则也会抛出异常。
180
-
181
- <a name =" file list " ></a >
182
- ### 获取目录文件列表
183
- ``` php
184
- $list = $upyun->getList('/demo/');
185
- $file = $list[0];
186
- echo $file['name']; // 文件名
187
- echo $file['type']; // 类型(目录: folder; 文件: file)
188
- echo $file['size']; // 尺寸
189
- echo $file['time']; // 创建时间
71
+ $file = fopen('/local/path/image.jpg', 'r');
72
+ $client->write('/save/image.png', $file, array('x-gmkerl-thumb' => '/format/png'));
190
73
```
191
- 获取目录文件以及子目录列表。需要获取根目录列表是,使用 ` $upyun->getList('/') ` ,或直接表用方法不传递参数。
192
- 目录获取失败则抛出异常。
193
74
194
- <a name =" file info " ></a >
195
- ### 获取文件信息
196
- ``` php
197
- $result = $upyun->getFileInfo('/demo/demo.png');
198
- echo $result['x-upyun-file-type']; // 文件类型
199
- echo $result['x-upyun-file-size']; // 文件大小
200
- echo $result['x-upyun-file-date']; // 创建日期
201
- ```
202
- 返回结果为一个数组。
75
+ 4 . 下载文件并保存到本地
203
76
204
- <a name =" bucket info " ></a >
205
- ### 获取空间使用状况
206
- ``` php
207
- $upyun->getBucketUsage(); // 获取Bucket空间使用情况
208
77
```
209
- 返回的结果为空间使用量,单位 *** Byte***
210
-
211
- <a name =" exception " ></a >
212
- ## 异常处理
213
- 当API请求发生错误时,SDK将抛出异常,具体错误代码请参考[ 标准API错误代码表] ( http://docs.upyun.com/api/rest_api/#rest-api )
214
-
215
- 根据返回HTTP CODE的不同,SDK将抛出以下异常:
216
-
217
- * ** UpYunAuthorizationException** 401,授权错误
218
- * ** UpYunForbiddenException** 403,权限错误
219
- * ** UpYunNotFoundException** 404,文件或目录不存在
220
- * ** UpYunNotAcceptableException** 406, 目录错误
221
- * ** UpYunServiceUnavailable** 503,系统错误
222
-
223
- 未包含在以上异常中的错误,将统一抛出 ` UpYunException ` 异常。
224
-
225
- 为了正确处理API请求中可能出现的异常,建议将API操作放在`try{...}catch(Exception
226
- $e){…}` 块中,如下所示:
227
-
228
- ``` php
229
- try {
230
- $upyun->getFolderUsage('/demo/');
231
- //your code here
232
-
233
- } catch(Exception $e) {
234
- echo $e->getCode(); // 错误代码
235
- echo $e->getMessage(); // 具体错误信息
236
- }
78
+ $saveLocal = fopen('/local/path/image.jpg', 'w');
79
+ // 第二个参数不传时,read 方法将直接返回文件内容
80
+ $client->read('/remote/server/image.png', $saveLocal);
237
81
```
238
82
239
83
<a name =" contribute " ></a >
@@ -245,13 +89,13 @@ try {
245
89
<a name =" community " ></a >
246
90
## 社区
247
91
248
- - [ UPYUN问答社区 ] ( http://segmentfault.com/upyun )
249
- - [ UPYUN微博 ] ( http://weibo.com/upaiyun )
92
+ - [ 问答社区 ] ( http://segmentfault.com/upyun )
93
+ - [ 微博 ] ( http://weibo.com/upaiyun )
250
94
251
95
<a name =" license " ></a >
252
96
## 许可证
253
97
254
- UPYUN PHP-SDK基于 MIT 开源协议
98
+ UPYUN PHP-SDK 基于 MIT 开源协议
255
99
256
100
< http://www.opensource.org/licenses/MIT >
257
101
0 commit comments