OSS

更新时间:2023-06-01 20:54

本接口支持阿里OSS、腾讯COS、七牛OSS三大平台,屏蔽各个服务商之间的差异,实现统一接口调用。
使用之前必须调用对应服务商的初始化接口,传入配置参数。

阿里云OSS初始化

Lib\Api::Oss_AliyunOss($options)

请求参数

参数类型含义
$optionarrayOSS配置数组

$options 参数列表

keyvalue 类型含义
oss_idstring阿里OSS服务商提供的访问凭证ID(Access Key ID)
oss_keystring阿里OSS服务商提供的访问凭证KEY(Access Key Secret)
oss_bucketstring阿里OSS服务商提供的存储桶名称
oss_endpointstring存储桶所在endpoint
oss_urlstring访问存储桶资料的网址,可以是OSS提供域名,也可以是CDN域名。
oss_bucket_urlstringOSS服务器上传网址,主要用于直传。

返回参数

返回操作对象

参数范例:

$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)

请求参数

参数类型含义
$optionarrayOSS配置数组

$options 参数列表

keyvalue 类型含义
oss_idstring腾讯COS服务商提供的访问凭证ID(SecretId)
oss_keystring腾讯COS服务商提供的访问凭证KEY(SecretKey)
oss_bucketstring腾讯COS服务商提供的存储桶名称
oss_endpointstring存储桶所在endpoint
oss_urlstring访问存储桶资料的网址,可以是腾讯COS提供域名,也可以是CDN域名。
oss_bucket_urlstringCOS服务器上传网址,主要用于直传。

返回参数

返回操作对象

参数范例:

$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)

请求参数

参数类型含义
$optionarrayOSS配置数组

$options 参数列表

keyvalue 类型含义
oss_idstring七牛OSS服务商提供的访问凭证ID(AccessKey)
oss_keystring七牛OSS服务商提供的访问凭证KEY(SecretKey)
oss_bucketstring七牛OSS服务商提供的存储桶名称
oss_endpointstring存储桶所在endpoint
oss_urlstring访问存储桶资料的网址,只能是七牛绑定的CDN域名。
oss_bucket_urlstringOSS服务器上传网址,主要用于直传。不同地域填写不同的值,如:华东: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)

请求参数

参数类型含义
$objectstring存储在OSS的对象名

返回参数

返回 bool 类型,true 对象存在,false 对象不存在

上传文件

用于把服务器的文件上传到OSS

uploadFile($file, $object, $Acl = null)

请求参数

参数类型含义
$filestring服务器上的文件路径
$objectstring设置要保存到OSS的对象名
$Aclstring设置要保存到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)

请求参数

参数类型含义
$datastring/binary上传的数据,字符串或二进制
$objectstring设置要保存到OSS的对象名
$Aclstring设置要保存到OSS的对象的存储属性(public为公有读,private为私有读,不设置则文件属性随桶

返回参数

返回 bool 类型,true 上传成功,false 上传失败

调用范例

uploadData('WitFrame','text/123.txt','public')
以上调用在OSS生成text/123.txt文件,文件内容为WitFrame,同时设置对象的属性为公有读。

下载文件

把存储在OSS中的对象下载到本地服务器

downFile($file, $object)

请求参数

参数类型含义
$filestring要下载到服务器上的文件路径
$objectstring存储在OSS的对象名

返回参数

返回 bool 类型,true 下载成功,false 下载失败

调用范例

downFile('monkey/123.jpg','pic/123.jpg')
以上调用可以把OSS中的对象下载到本地服务器的monkey文件夹中,文件名为123.jpg

删除文件

删除存储在OSS中的对象

deleteFile($objects)

请求参数

参数类型含义
$objectstring存储在OSS的对象名

返回参数

返回 bool 类型,true 删除成功,false 删除失败

调用范例

deleteFile('pic/123.jpg')
以上调用可以把OSS中名为pic/123.jpg的对象删除

OSS对象改名

改变OSS中的对象名称

renameObject($oldObject, $newObject, $MimeType = null)

请求参数

参数类型含义
$oldObjectstring源OSS对象名
$newObjectstring要改成的OSS对象名
$MimeTypestring设置改名后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)

请求参数

参数类型含义
$objectstring存储在OSS的对象名
$Aclstring设置要保存到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)

请求参数

参数类型含义
$objectstring存储在OSS的对象名
$filenamestring设置对象下载的文件名,为空时,下载的文件名为对象名
$estring下载链接的有效时间,单位为秒。

返回参数

返回 string 类型,为对象加上访问签名的URL。

调用范例

signUrl('monkey/123.jpg','456.jpg')
以上调用可以返回OSS中的对象monkey/123.jpg加上签名的下载URL,使用此URL下载的文件名为456.jpg

获取对象直传签名

以json格工返回对直传签名信息,用于向OSS直传文件。

getPolicy($dir, $object, $length = 1048576000)

请求参数

参数类型含义
$dirstring限制上传后的文件存储的OSS目录
$objectstring限制上传后的文件名
$lengthstring限制上传文件大小,仅对阿里云有效

返回参数

返回 json 类型,返回直传签名信息,因OSS服务商而异,具体示例请参考SDK

调用范例

getPolicy('monkey', '123.txt')
以上调用以json格工返回直传信息,在前台使用该信息向OSS直传文件,上传到OSS后文件名只能是monkey/123.txt

获取对象信息

获取存储在OSS中的对象的文件大小信息,如果是图片文件还可以返回图片文件的高宽。

getCallback($object)

请求参数

参数类型含义
$objectstring存储在OSS的对象名

返回参数

array(
    'size'  => $size,
    'width' => $width,
    'height' => $height,
)
参数类型含义
$sizeintOSS对象的大小
$content_typestringOSS对象的类型
$timestringOSS对象的上传时间
$widthint如果是图片文件则返回图像宽度,否则为0。
$heightint如果是图片文件则返回图像高度,否则为0。

调用范例

getCallback('pic/123.jpg')
以上调用返回pic/123.jpg对象的相关信息

获取OSS的文件列表

返回OSS文件列表

getFilesList($prefix = '', $marker = '', $limit = 100, $delimiter = '') 

请求参数

参数类型含义
$prefixstring列表前缀,例如:'/monkey',则只在monkey目录下搜索文件
$markerstring查找的开始位置,为空则从指定目录的第一文件开始
$limitint本次查找中的最大列表数,如果查找的目录中文件数少于此值则列出所有

返回参数

array(
    'marker'  => $marker,
    'items' => array(),
)
参数类型含义
$markerstring返回下一次要查找的位置,为空则表示已经搜索结束
$itemsarray文件列表二维数组,每一行是一个文件信息,信息内容因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));

完整范例

https://gitee.com/WitFrameSDK/Samples/tree/oss