Skip to content

Commit 1c13342

Browse files
authored
Merge pull request #16 from upyun/feature/v3
Feature/v3
2 parents b657fe7 + 626d6e1 commit 1c13342

34 files changed

+2082
-832
lines changed

.editorconfig

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
root = true
2+
3+
[*.php]
4+
indent_style = space
5+
indent_size = 4
6+
end_of_line = lf
7+
charset = utf-8
8+
trim_trailing_whitespace = true
9+
insert_final_newline = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
.DS_Store
2-
vendor/
2+
.idea
3+
vendor
34
composer.lock
4-
.idea/

.scrutinizer.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
filter:
2+
paths:
3+
- 'src/*'
4+
- 'tests/*'
5+
6+
tools:
7+
php_code_sniffer:
8+
config:
9+
standard: PSR4

.travis.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
language: php
22
php:
3-
- "5.3"
4-
- "5.4"
53
- "5.5"
6-
- "5.6"
7-
- "7.0"
84
before_script:
95
- composer install
106
script:

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2012 UPYUN
1+
Copyright (c) 2016 UPYUN
22

33
Permission is hereby granted, free of charge, to any person obtaining a copy
44
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 28 additions & 184 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
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

@@ -45,195 +40,44 @@
4540
composer 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

composer.json

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,19 @@
77
"homepage": "https://github.com/upyun/php-sdk/",
88
"license": "MIT",
99
"require": {
10-
"php": ">=5.3.0",
11-
"ext-curl": "*"
10+
"php": ">=5.5.0",
11+
"ext-curl": "*",
12+
"guzzlehttp/guzzle": "~6.0"
1213
},
1314
"require-dev": {
14-
"phpunit/phpunit": "~4.0"
15+
"phpunit/phpunit": "~4.0",
16+
"phpdocumentor/phpdocumentor": "^2.9"
17+
},
18+
"autoload": {
19+
"psr-4": { "Upyun\\": "src/Upyun/" }
20+
},
21+
"autoload-dev": {
22+
"psr-4": { "Upyun\\Tests\\": "tests/" }
1523
},
1624
"authors": [
1725
{
@@ -30,8 +38,5 @@
3038
"name": "sabakugaara",
3139
"email": "[email protected]"
3240
}
33-
],
34-
"autoload": {
35-
"files": ["upyun.class.php"]
36-
}
41+
]
3742
}

examples/client-upload/Readme.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## 客户端上传
2+
3+
本示例展示了如何使用表单 API, 直接从客户端进行安全的文件上传, 这种方式不需要客户服务器进行中转, 节省了客户服务器流量, 并且支持 HTTP/HTTPS 两种协议
4+
5+
DEMO 使用 `sdkimg` 空间进行演示, 上传成功后, 访问路径为 `http://sdkimg.b0.upaiyun.com/` 拼接保存路径
6+
7+
#### 运行示例
8+
9+
- `cd examples/client-upload`
10+
- `php -S localhost:9000`
11+
12+
打开浏览器访问 `http://localhost:9000`, 选则文件上传即可.

0 commit comments

Comments
 (0)