Simpic/vendor/upyun/sdk/doc.md

510 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# SDK 文档
又拍云 php sdk 中所有封装的接口,均通过 `Upyun\Upyun` 类封装,后续新版本也会保持
该类方法向下兼容sdk 中其他类及其方法不保证兼容性。如果有使用疑问欢迎提 [issues](https://github.com/upyun/php-sdk/issues)
## 方法列表
* [Upyun](#upyun)
* [__construct](#__construct)
* [setConfig](#setconfig) 更新服务配置
* [write](#write) 上传一个文件到又拍云存储
* [read](#read) 读取云存储文件/目录内容
* [has](#has) 判断文件是否存在于又拍云存储
* [info](#info) 获取云存储文件/目录的基本信息
* [getMimetype](#getmimetype) 获取云存储文件类型
* [delete](#delete) 删除文件或者目录
* [createDir](#createdir) 创建目录
* [deleteDir](#deletedir) 删除文件或者目录
* [usage](#usage) 获取目录下存储使用量
* [purge](#purge) 刷新缓存
* [process](#process) 异步云处理
* [queryProcessStatus](#queryprocessstatus) 查询异步云处理任务进度
* [queryProcessResult](#queryprocessresult) 查询异步云处理任务结果
## Upyun
`Upyun\Upyun` 类实现了又拍云云存储和云处理的所有接口,通过该类可以实现文件上传、下载;图片视频等多媒体资源云处理。
本文档中,提到的"服务"是指又拍云文件加速回又拍云源类型的服务(即原先的存储类服务)。
* 命名空间: `\Upyun\Upyun`
### __construct
Upyun constructor.
```php
Upyun::__construct( \Upyun\Config $config )
```
**参数列表:**
- **\Upyun\Config** `$config`
服务配置
---
### setConfig
更新服务配置
```php
Upyun::setConfig( \Upyun\Config $config )
```
当需要操作的新的服务时,使用该方法传入新的服务配置即可
**参数列表:**
- **\Upyun\Config** `$config`
服务配置
---
### write
上传一个文件到又拍云存储
```php
Upyun::write( string $path, string|resource $content, array $params = array(), boolean $withAsyncProcess = false )
```
上传的文件格式支持文件流或者字符串方式上传。除简单的文件上传外,针对多媒体资源(图片、音视频),还可以设置同步/异步预处理多媒体资源,例如:图片的裁剪缩放,音视频的转码截图等等众多又拍云强大的云处理功能
**参数列表:**
- **string** `$path`
被上传的文件在又拍云存储服务中保存的路径
- **string|resource** `$content`
被上传的文件内容(字符串),或者打开该文件获得的文件句柄(文件流)。当上传本地大文件时,推荐使用文件流的方式上传
- **array** `$params`
上传文件时,附加的自定义参数。支持 Content-MD5 Content-Type Content-Secret 等,详见 [上传参数](http://docs.upyun.com/api/rest_api/#_2),例如:
- 设置文件[保护秘钥](http://docs.upyun.com/api/rest_api/#Content-Secret) `write($path, $content, array('Content-Secret' => 'my-secret'))`
- 添加[文件元信息](http://docs.upyun.com/api/rest_api/#metadata) `write($path, $content, array('X-Upyun-Meta-Foo' =>
'bar'))`
- [图片同步预处理](http://docs.upyun.com/cloud/image/#_5) `write($path, $content, array('x-gmkerl-thumb' => '/format/png'))`
- **boolean** `$withAsyncProcess`
默认为 `false`,当上传图片或者音视频资源时,可以设置该参数为 `true`,开启图片音视频的[异步处理功能](http://docs.upyun.com/api/form_api/#_6) ,例如:
```
// 以下参数会将新上传的图片,再异步生成另一份 png 格式的图片,原图不受影响
write($path, $content, array(
'apps' => array(
array(
'name' => 'thumb', //异步图片处理任务
'x-gmkerl-thumb' => '/format/png', // 格式化图片为 png 格式
'save_as': '/iamge/png/new.png', // 处理成功后的图片保存路径
'notify_url': 'http://your.notify.url' // 异步任务完成后的回调地址
)
)
), true);
```
**返回值:**
若文件是图片则返回图片基本信息,如:`array('x-upyun-width' => 123, 'x-upyun-height' => 50, 'x-upyun-frames'
=> 1, 'x-upyun-file-type' => 'JPEG')`,否则返回空数组。当使用异步预处理功能时,返回结果为布尔值,成功为 `true`
---
### read
读取云存储文件/目录内容
```php
Upyun::read( string $path, resource $saveHandler = NULL, array $params = array() )
```
**参数列表:**
- **string** `$path`
又拍云存储中的文件或者目录路径
- **resource** `$saveHandler`
文件内容写入本地文件流。例如 `$saveHandler = fopen('/local/file', 'w')
`。当设置该参数时,将以文件流的方式,直接将又拍云中的文件写入本地的文件流,或其他可以写入的流
- **array** `$params`
可选参数,读取目录内容时,需要设置三个参数: `X-List-Iter` 分页开始位置(第一页不需要设置),`X-List-Limit` 获取的文件数量(默认 100最大
10000`X-List-Order` 结果以时间正序或者倒序
**返回值:**
$return 当读取文件且没有设置 `$saveHandler` 参数时,返回一个字符串类型,表示文件内容;设置了 `$saveHandler` 参数时,返回布尔值
`true`。当读取目录时,返回一个数组,表示目录下的文件列表。目录下文件内容过多时,需要通过判断返回数组中的 `is_end` 属性,进行分页读取内容
---
### has
判断文件是否存在于又拍云存储
```php
Upyun::has( string $path )
```
注意: 对刚删除的文件, 立即调用该方法可能会返回 true, 因为服务端执行删除操作后可能会有很短暂的延迟.
**参数列表:**
- **string** `$path`
云存储的文件路径
**返回值:**
存在时返回 `true`,否则返回 `false`
---
### info
获取云存储文件/目录的基本信息
```php
Upyun::info( string $path, array $otherHeaders)
```
**参数列表:**
- **string** `$path`
云存储的文件路径
- **string** `$otherHeaders`
设置了后,方法将返回其他 http header 中的信息,默认为空
**返回值:**
返回一个数组,默认包含以下 key
- `x-upyun-file-type` 当 $path 是目录时,值为 *folder*,当 $path 是文件时,值为 *file*
- `x-upyun-file-size` 文件大小
- `x-upyun-file-date` 文件的创建时间
---
### getMimetype
获取云存储文件的文档类型
```php
Upyun::getMimetype( string $path )
```
**参数列表:**
- **string** `$path`
云存储的文件路径
**返回值:**
文档类型e.g: `appcation/json`,获取失败返回空字符串
---
### delete
删除文件或者目录
```php
Upyun::delete( string $path, boolean $async = false )
```
**参数列表:**
- **string** `$path`
文件或目录在又拍云存储的路径
- **boolean** `$async`
是否异步删除,默认为 false表示同步删除。当需要批量删除大量文件时必须选择异步删除
**返回值:**
删除成功返回 true否则 false
---
### createDir
创建目录
```php
Upyun::createDir( string $path )
```
**参数列表:**
- **string** `$path`
需要在又拍云存储创建的目录路径
**返回值:**
创建成功返回 true否则返回 false
---
### deleteDir
删除文件或者目录
```php
Upyun::deleteDir( string $path )
```
**参数列表:**
- **string** `$path`
需要被删除的云存储文件或目录路径
**返回值:**
成功返回 true否则 false
---
### usage
获取目录下存储使用量
```php
Upyun::usage( string $path = '/' )
```
**参数列表:**
- **string** `$path`
云存储目录路径,默认为根目录,表示整个云存储服务使用的空间大小
**返回值:**
存储使用量,单位字节
---
### purge
刷新缓存
```php
Upyun::purge( array|string $urls )
```
**参数列表:**
- **array|string** `$urls`
需要刷新的文件 url 列表
**返回值:**
刷新失败的 url 列表,若全部刷新成功则为空数组
---
### process
异步云处理
```php
Upyun::process( string $source, array $tasks )
```
该方法是基于[又拍云云处理](http://docs.upyun.com/cloud/) 服务实现,可以实现音视频的转码、切片、剪辑;文件的压缩解压缩;文件拉取功能
注意:
- 所有需要调用该方法处理的资源,必须已经上传到云存储服务
- 使用 `process` 之前,必须配置 `config->processNotifyUrl`,否则会提交任务失败
例如视频转码:
```
process($source, array(
array(
'type' => 'video', // video 表示视频任务, audio 表示音频任务
'avopts' => '/s/240p(4:3)/as/1/r/30', // 处理参数,`s` 表示输出的分辨率,`r` 表示视频帧率,`as` 表示是否自动调整分辨率
'save_as' => '/video/240/new.mp4', // 新视频在又拍云存储的保存路径
),
... // 同时还可以添加其他任务
))
```
注意,被处理的资源需要已经上传到又拍云云存储
**参数列表:**
- **string** `$source`
需要预处理的图片、音视频资源在又拍云存储的路径
- **array** `$tasks`
需要处理的任务
**返回值:**
任务 ID提交了多少任务便会返回多少任务 ID与提交任务的顺序保持一致。可以通过任务 ID 查询处理进度。格式如下:
```
array(
'35f0148d414a688a275bf915ba7cebb2',
'98adbaa52b2f63d6d7f327a0ff223348',
)
```
---
### queryProcessStatus
音视频预处理任务进度查询
```php
Upyun::queryProcessStatus( array $taskIds )
```
根据 `process` 方法返回的任务 ID通过该访问查询处理进度
**参数列表:**
- **array** `$taskIds`
任务 ID
**返回值:**
查询失败返回布尔值 `false`,否则返回每个任务的百分比进度信息,格式如下:
```
array(
'35f0148d414a688a275bf915ba7cebb2' => 100, // 100 表示任务完成
'c3103189fa906a5354d29bd807e8dc51' => 35,
'98adbaa52b2f63d6d7f327a0ff223348' => null, // null 表示任务未开始,或异常
)
```
---
### queryProcessResult
音视频预处理任务结果查询
```php
Upyun::queryProcessResult( array $taskIds )
```
根据 `process` 方法返回的任务 ID通过该访问查询处理结果会包含每个任务详细信息
**参数列表:**
- **array** `$taskIds`
任务 ID
**返回值:**
查询失败返回 `false`,否则返回每个任务的处理结果,格式如下:
```
array(
'9d9c32b63a1034834e77672c6f51f661' => array(
'path' => array('/v2.mp4'),
'signature' => '4042c1f07f546d28',
'status_code' => 200,
'service' => 'your_storage_service',
'description' => 'OK',
'task_id' => '9d9c32b63a1034834e77672c6f51f661',
'timestamp' => 1472010684
)
)
```
---
--------
> This document was automatically generated from source code comments on 2017-02-06 using [phpDocumentor](http://www.phpdoc.org/) and [cvuorinen/phpdoc-markdown-public](https://github.com/cvuorinen/phpdoc-markdown-public)