11# 又拍云PHP SDK
22![ build] ( https://travis-ci.org/upyun/php-sdk.svg )
33
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+
56- [ 更新说明] (#update instructions)
67- [ 使用说明] (#use instructions)
78 - [ 安装] ( #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 )
1910- [ 贡献代码] ( #contribute )
2011- [ 社区] ( #community )
2112- [ 许可证] ( #license )
2213
2314<a name =" update instructions " ></a >
2415## 更新说明
16+ #### 3.0.0
17+
18+ - 重写 API 接口,不兼容 2.x 版本
19+ - 集合分块、刷新、视频预处理功能
2520
2621#### 2.2.0
2722
4540composer require upyun/sdk
4641```
4742
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-
7943<a name =" usage " ></a >
80- ## 示例
81-
82- * 示例代码中所有` bucketname ` ,` operator_name ` ,` operator_pwd ` 以及路径需要替换成实际环境的值,账户密码请注意保密*
83-
84- <a name =" upload file " ></a >
85- ### 上传文件
44+ ### 初始化
8645
87- 文件类空间可以上传任意形式的二进制文件
88-
89- ** 1.直接读取整个文件内容:**
9046``` php
91- $upyun->writeFile('/path/to/server/file.ext', 'your file content', true);
92- ```
47+ require_once('vendor/autoload.php');
9348
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);
9953```
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.上传图片并创建缩略图:**
11254
113- ` writeFile() ` 方法第四个参数为数组类型可选参数,用来设置文件类型、缩略图处理。
114- ``` php
115- $opts = array(
116- UpYun::X_GMKERL_THUMBNAIL => 'square' //创建缩略图
117- );
55+ 1 . 字符串写入又拍云服务器
11856
119- $fh = fopen('demo.png', 'r');
120- $upyun->writeFile('/temp/upload_demo.png', $fh, true, $opts);
121- fclose($fh);
12257```
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');
14559```
146- 如果上传失败,则会抛出异常。
14760
148- <a name =" download file " ></a >
149- ### 下载文件
61+ 2 . 文件流写入又拍云服务器
15062
151- ** 1.直接读取文件内容:**
152- ``` php
153- $data = $upyun->readFile('/temp/upload_demo.png');
15463```
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);
16166```
16267
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 )
17269
173- <a name =" delete " ></a >
174- ### 删除目录或者文件
175- ``` php
176- $upyun->delete('/demo/'); // 删除目录
177- $upyun->delete('/demo/demo.png'); // 删除文件
17870```
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'));
19073```
191- 获取目录文件以及子目录列表。需要获取根目录列表是,使用 ` $upyun->getList('/') ` ,或直接表用方法不传递参数。
192- 目录获取失败则抛出异常。
19374
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 . 下载文件并保存到本地
20376
204- <a name =" bucket info " ></a >
205- ### 获取空间使用状况
206- ``` php
207- $upyun->getBucketUsage(); // 获取Bucket空间使用情况
20877```
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);
23781```
23882
23983<a name =" contribute " ></a >
@@ -245,13 +89,13 @@ try {
24589<a name =" community " ></a >
24690## 社区
24791
248- - [ UPYUN问答社区 ] ( http://segmentfault.com/upyun )
249- - [ UPYUN微博 ] ( http://weibo.com/upaiyun )
92+ - [ 问答社区 ] ( http://segmentfault.com/upyun )
93+ - [ 微博 ] ( http://weibo.com/upaiyun )
25094
25195<a name =" license " ></a >
25296## 许可证
25397
254- UPYUN PHP-SDK基于 MIT 开源协议
98+ UPYUN PHP-SDK 基于 MIT 开源协议
25599
256100< http://www.opensource.org/licenses/MIT >
257101
0 commit comments