又拍云 php sdk 中所有封装的接口,均通过 Upyun\Upyun
类封装,后续新版本也会保持
该类方法向下兼容,sdk 中其他类及其方法不保证兼容性。如果有使用疑问欢迎提 issues
- Upyun
- __construct
- setConfig 更新服务配置
- write 上传一个文件到又拍云存储
- read 读取云存储文件/目录内容
- has 判断文件是否存在于又拍云存储
- info 获取云存储文件/目录的基本信息
- getMimetype 获取云存储文件类型
- delete 删除文件或者目录
- createDir 创建目录
- deleteDir 删除文件或者目录
- usage 获取目录下存储使用量
- purge 刷新缓存
- process 异步云处理
- queryProcessStatus 查询异步云处理任务进度
- queryProcessResult 查询异步云处理任务结果
Upyun\Upyun
类实现了又拍云云存储和云处理的所有接口,通过该类可以实现文件上传、下载;图片视频等多媒体资源云处理。
本文档中,提到的"服务"是指又拍云文件加速回又拍云源类型的服务(即原先的存储类服务)。
- 命名空间:
\Upyun\Upyun
Upyun constructor.
Upyun::__construct( \Upyun\Config $config )
参数列表:
- \Upyun\Config
$config
服务配置
更新服务配置
Upyun::setConfig( \Upyun\Config $config )
当需要操作的新的服务时,使用该方法传入新的服务配置即可
参数列表:
- \Upyun\Config
$config
服务配置
上传一个文件到又拍云存储
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 等,详见 上传参数,例如: -
boolean
$withAsyncProcess
默认为false
,当上传图片或者音视频资源时,可以设置该参数为true
,开启图片音视频的异步处理功能 ,例如:// 以下参数会将新上传的图片,再异步生成另一份 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
。
读取云存储文件/目录内容
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
属性,进行分页读取内容
判断文件是否存在于又拍云存储
Upyun::has( string $path )
注意: 对刚删除的文件, 立即调用该方法可能会返回 true, 因为服务端执行删除操作后可能会有很短暂的延迟.
参数列表:
- string
$path
云存储的文件路径
返回值:
存在时返回 true
,否则返回 false
获取云存储文件/目录的基本信息
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
文件的创建时间
获取云存储文件的文档类型
Upyun::getMimetype( string $path )
参数列表:
- string
$path
云存储的文件路径
返回值:
文档类型,e.g: appcation/json
,获取失败返回空字符串
删除文件或者目录
Upyun::delete( string $path, boolean $async = false )
参数列表:
-
string
$path
文件或目录在又拍云存储的路径 -
boolean
$async
是否异步删除,默认为 false,表示同步删除。当需要批量删除大量文件时,必须选择异步删除
返回值:
删除成功返回 true,否则 false
创建目录
Upyun::createDir( string $path )
参数列表:
- string
$path
需要在又拍云存储创建的目录路径
返回值:
创建成功返回 true,否则返回 false
删除文件或者目录
Upyun::deleteDir( string $path )
参数列表:
- string
$path
需要被删除的云存储文件或目录路径
返回值:
成功返回 true,否则 false
获取目录下存储使用量
Upyun::usage( string $path = '/' )
参数列表:
- string
$path
云存储目录路径,默认为根目录,表示整个云存储服务使用的空间大小
返回值:
存储使用量,单位字节
复制文件。只能操作文件,不能操作文件夹。
Upyun::copy( string $source, string $target )
参数列表:
- string
$source
源文件地址 - string
$target
目标文件地址
返回值:
复制成功返回 true,否则返回 false
移动文件。可以进行文件重命名、文件移动,只能操作文件,不能操作文件夹。
Upyun::move( string $source, string $target )
参数列表:
- string
$source
需要移动的文件地址 - string
$target
目标文件地址
返回值:
移动成功返回 true,否则返回 false
刷新缓存
Upyun::purge( array|string $urls )
参数列表:
- array|string
$urls
需要刷新的文件 url 列表
返回值:
刷新失败的 url 列表,若全部刷新成功则为空数组
异步云处理
Upyun::process( array $tasks, string $type, string $source )
该方法是基于又拍云云处理 服务实现,可以实现音视频的转码、切片、剪辑;文件的压缩解压缩;文件拉取功能
注意:
- 所有需要调用该方法处理的资源,必须已经上传到云存储服务
- 使用
process
之前,必须配置config->processNotifyUrl
,否则会提交任务失败
例如视频转码:
process(array(
array(
'type' => 'video', // video 表示视频任务, audio 表示音频任务
'avopts' => '/s/240p(4:3)/as/1/r/30', // 处理参数,`s` 表示输出的分辨率,`r` 表示视频帧率,`as` 表示是否自动调整分辨率
'save_as' => '/video/240/new.mp4', // 新视频在又拍云存储的保存路径
),
... // 同时还可以添加其他任务
), Upyun::$PROCESS_TYPE_MEDIA, $source)
注意,被处理的资源需要已经上传到又拍云云存储
参数列表:
-
array
$tasks
需要处理的任务 -
string
$type
异步云处理任务类型,可选值:Upyun::$PROCESS_TYPE_MEDIA
异步音视频处理Upyun::$PROCESS_TYPE_ZIP
文件压缩Upyun::$PROCESS_TYPE_UNZIP
文件解压Upyun::$PROCESS_TYPE_SYNC_FILE
文件拉取Upyun::$PROCESS_TYPE_STITCH
图片拼接
-
string
$source
可选参数,处理异步音视频任务时,需要传递该参数,表示需要处理的文件路径
返回值:
任务 ID,提交了多少任务,便会返回多少任务 ID,与提交任务的顺序保持一致。可以通过任务 ID 查询处理进度。格式如下:
array(
'35f0148d414a688a275bf915ba7cebb2',
'98adbaa52b2f63d6d7f327a0ff223348',
)
音视频预处理任务进度查询
Upyun::queryProcessStatus( array $taskIds )
根据 process
方法返回的任务 ID,通过该访问查询处理进度
参数列表:
- array
$taskIds
任务 ID
返回值:
查询失败返回布尔值 false
,否则返回每个任务的百分比进度信息,格式如下:
array(
'35f0148d414a688a275bf915ba7cebb2' => 100, // 100 表示任务完成
'c3103189fa906a5354d29bd807e8dc51' => 35,
'98adbaa52b2f63d6d7f327a0ff223348' => null, // null 表示任务未开始,或异常
)
音视频预处理任务结果查询
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 and cvuorinen/phpdoc-markdown-public