OSS
更新时间:2023-06-01 20:54
本接口支持阿里OSS、腾讯COS、七牛OSS三大平台,屏蔽各个服务商之间的差异,实现统一接口调用。
使用之前必须调用对应服务商的初始化接口,传入配置参数。
阿里云OSS初始化
Lib\Api::Oss_AliyunOss($options)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$option | array | OSS配置数组 |
$options 参数列表
key | value 类型 | 含义 |
---|---|---|
oss_id | string | 阿里OSS服务商提供的访问凭证ID(Access Key ID) |
oss_key | string | 阿里OSS服务商提供的访问凭证KEY(Access Key Secret) |
oss_bucket | string | 阿里OSS服务商提供的存储桶名称 |
oss_endpoint | string | 存储桶所在endpoint |
oss_url | string | 访问存储桶资料的网址,可以是OSS提供域名,也可以是CDN域名。 |
oss_bucket_url | string | OSS服务器上传网址,主要用于直传。 |
返回参数
返回操作对象
参数范例:
$options = array(
'oss_id' => '',
'oss_key' => '',
'oss_bucket' => 'test',
'oss_endpoint' => 'oss-cn-beijing.aliyuncs.com',
'oss_url' => 'https://test.oss-cn-beijing.aliyuncs.com',
'oss_bucket_url' => 'https://test.oss-cn-beijing.aliyuncs.com',
);
腾讯云COS初始化
Lib\Api::Oss_TencentCos($options)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$option | array | OSS配置数组 |
$options 参数列表
key | value 类型 | 含义 |
---|---|---|
oss_id | string | 腾讯COS服务商提供的访问凭证ID(SecretId) |
oss_key | string | 腾讯COS服务商提供的访问凭证KEY(SecretKey) |
oss_bucket | string | 腾讯COS服务商提供的存储桶名称 |
oss_endpoint | string | 存储桶所在endpoint |
oss_url | string | 访问存储桶资料的网址,可以是腾讯COS提供域名,也可以是CDN域名。 |
oss_bucket_url | string | COS服务器上传网址,主要用于直传。 |
返回参数
返回操作对象
参数范例:
$options = array(
'oss_id' => '',
'oss_key' => '',
'oss_bucket' => 'test-100000',
'oss_endpoint' => 'ap-shanghai',
'oss_url' => 'https://test-100000.cos.ap-shanghai.myqcloud.com',
'oss_bucket_url' => 'https://test-100000.cos.ap-shanghai.myqcloud.com',
);
七牛云OSS初始化
Lib\Api::Oss_QiniuOss($options)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$option | array | OSS配置数组 |
$options 参数列表
key | value 类型 | 含义 |
---|---|---|
oss_id | string | 七牛OSS服务商提供的访问凭证ID(AccessKey) |
oss_key | string | 七牛OSS服务商提供的访问凭证KEY(SecretKey) |
oss_bucket | string | 七牛OSS服务商提供的存储桶名称 |
oss_endpoint | string | 存储桶所在endpoint |
oss_url | string | 访问存储桶资料的网址,只能是七牛绑定的CDN域名。 |
oss_bucket_url | string | OSS服务器上传网址,主要用于直传。不同地域填写不同的值,如:华东:https://upload.qiniup.com;华北:https://upload-z1.qiniup.com等,详情参阅https://developer.qiniu.com/kodo/1671/region-endpoint-fq 中的源站上传 |
返回参数
返回操作对象
参数范例:
$options = array(
'oss_id' => '',
'oss_key' => '',
'oss_bucket' => 'test',
'oss_endpoint' => 'test',
'oss_url' => 'http://xxxx.hb-bkt.clouddn.com',
'oss_bucket_url' => 'https://upload.qiniup.com;',
);
连接测试
此接口用于检查与OSS链接是否正常
testOSS()
返回参数
返回测试状态,0=正常,3=上传测试失败,2=下载测试失败,1=OSS链接不能访问
1或2一般是密钥有误,3一般是oss_url填写有误,不能访问OSS资料
设置跨域
自动设置OSS跨域,方便直传。
setCors()
返回参数
无
判断OSS对象是否存在
判断OSS中是否存在某个对象
isObject($objects)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$object | string | 存储在OSS的对象名 |
返回参数
返回 bool 类型,true 对象存在,false 对象不存在
上传文件
用于把服务器的文件上传到OSS
uploadFile($file, $object, $Acl = null)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$file | string | 服务器上的文件路径 |
$object | string | 设置要保存到OSS的对象名 |
$Acl | string | 设置要保存到OSS的对象的存储属性(public为公有读,private为私有读,不设置则文件属性随桶 |
返回参数
返回 bool 类型,true 上传成功,false 上传失败
调用范例
uploadFile('monkey/123.jpg','pic/123.jpg','public')
以上调用可以把服务器中的monkey/123.jpg文件上传到OSS,存储为pic/123.jpg对象,同时设置pic/123.jpg对象的属性为公有读。
流式上传文件
可以把字符串或二进制上传到OSS生成文件。
uploadData($data, $object, $Acl = null)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$data | string/binary | 上传的数据,字符串或二进制 |
$object | string | 设置要保存到OSS的对象名 |
$Acl | string | 设置要保存到OSS的对象的存储属性(public为公有读,private为私有读,不设置则文件属性随桶 |
返回参数
返回 bool 类型,true 上传成功,false 上传失败
调用范例
uploadData('WitFrame','text/123.txt','public')
以上调用在OSS生成text/123.txt文件,文件内容为WitFrame,同时设置对象的属性为公有读。
下载文件
把存储在OSS中的对象下载到本地服务器
downFile($file, $object)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$file | string | 要下载到服务器上的文件路径 |
$object | string | 存储在OSS的对象名 |
返回参数
返回 bool 类型,true 下载成功,false 下载失败
调用范例
downFile('monkey/123.jpg','pic/123.jpg')
以上调用可以把OSS中的对象下载到本地服务器的monkey文件夹中,文件名为123.jpg
删除文件
删除存储在OSS中的对象
deleteFile($objects)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$object | string | 存储在OSS的对象名 |
返回参数
返回 bool 类型,true 删除成功,false 删除失败
调用范例
deleteFile('pic/123.jpg')
以上调用可以把OSS中名为pic/123.jpg的对象删除
OSS对象改名
改变OSS中的对象名称
renameObject($oldObject, $newObject, $MimeType = null)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$oldObject | string | 源OSS对象名 |
$newObject | string | 要改成的OSS对象名 |
$MimeType | string | 设置改名后OSS对象的MIME文件类型,不填则表示原样,修改此参数也可以达到修改OSS对象的MIME类型的目的.(注意,在阿里中此值可能无效,因为阿里会根据文件内容自动设置MIME) |
返回参数
返回 bool 类型,true 改名成功,false 改名失败
调用范例
renameObject('monkey/123.jpg','pic/456.jpg','mp4')
以上调用可以把OSS中的对象monkey/123.jpg改名为pic/456.jpg,改强制吧文件的MIME改为mp4
设置OSS中对象的文件属性
可以把OSS中对象的文件属性设置公有读或私有读
setAcl($object, $Acl = null)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$object | string | 存储在OSS的对象名 |
$Acl | string | 设置要保存到OSS的对象的存储属性(public为公有读,private为私有读) |
返回参数
返回 bool 类型,true 设置成功,false 设置失败
调用范例
setAcl('monkey/123.jpg','private')
以上调用可以把OSS中的对象monkey/123.jpg的文件属性设置为私有读
获取对象下载签名 URL
返回对象加上访问签名的URL,此URL可以在任意在地方访问私有读文件并可以指定下载时的文件名。
如果是公有读文件,直接使用OSS的访问URL加上对象名即可,无需使用此接口。
signUrl($object, $filename = '', $e = 3600)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$object | string | 存储在OSS的对象名 |
$filename | string | 设置对象下载的文件名,为空时,下载的文件名为对象名 |
$e | string | 下载链接的有效时间,单位为秒。 |
返回参数
返回 string 类型,为对象加上访问签名的URL。
调用范例
signUrl('monkey/123.jpg','456.jpg')
以上调用可以返回OSS中的对象monkey/123.jpg加上签名的下载URL,使用此URL下载的文件名为456.jpg
获取对象直传签名
以json格工返回对直传签名信息,用于向OSS直传文件。
getPolicy($dir, $object, $length = 1048576000)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$dir | string | 限制上传后的文件存储的OSS目录 |
$object | string | 限制上传后的文件名 |
$length | string | 限制上传文件大小,仅对阿里云有效 |
返回参数
返回 json 类型,返回直传签名信息,因OSS服务商而异,具体示例请参考SDK
调用范例
getPolicy('monkey', '123.txt')
以上调用以json格工返回直传信息,在前台使用该信息向OSS直传文件,上传到OSS后文件名只能是monkey/123.txt
获取对象信息
获取存储在OSS中的对象的文件大小信息,如果是图片文件还可以返回图片文件的高宽。
getCallback($object)
请求参数
参数 | 类型 | 含义 |
---|---|---|
$object | string | 存储在OSS的对象名 |
返回参数
array(
'size' => $size,
'width' => $width,
'height' => $height,
)
参数 | 类型 | 含义 |
---|---|---|
$size | int | OSS对象的大小 |
$content_type | string | OSS对象的类型 |
$time | string | OSS对象的上传时间 |
$width | int | 如果是图片文件则返回图像宽度,否则为0。 |
$height | int | 如果是图片文件则返回图像高度,否则为0。 |
调用范例
getCallback('pic/123.jpg')
以上调用返回pic/123.jpg对象的相关信息
获取OSS的文件列表
返回OSS文件列表
getFilesList($prefix = '', $marker = '', $limit = 100, $delimiter = '')
请求参数
参数 | 类型 | 含义 |
---|---|---|
$prefix | string | 列表前缀,例如:'/monkey',则只在monkey目录下搜索文件 |
$marker | string | 查找的开始位置,为空则从指定目录的第一文件开始 |
$limit | int | 本次查找中的最大列表数,如果查找的目录中文件数少于此值则列出所有 |
返回参数
array(
'marker' => $marker,
'items' => array(),
)
参数 | 类型 | 含义 |
---|---|---|
$marker | string | 返回下一次要查找的位置,为空则表示已经搜索结束 |
$items | array | 文件列表二维数组,每一行是一个文件信息,信息内容因OSS而异,可以先打印出来熟悉下。 |
调用范例
//每次从monkey文件夹取出10个文件信息,直到找出所有
$marker = '';
do{
$result = $cos->getFilesList('/monkey',$marker,10);
$items = $result['items'];
foreach($items as $item){
print_r($item);
}
$marker = $result['marker'];
}while(!empty($marker));