首先下载安装thinkcmf5.1,参见https://www.thinkcmf.com/doc5_1.html
安装完成后,切换到项目根目录,使用命令 composer require aliyuncs/oss-sdk-php,参见https://help.aliyun.com/document_detail/85580.html,等待下载完成,即可直接调用使用
登陆阿里云,开通OSS,创建ram子账号管理oss,参考sdk示例,开始使用OSS
在app/demo创建控制器,引用OSS
use OSS\OssClient;
use OSS\Core\OssException;
- 创建bucket
/**
* 创建存储空间
*/
function createBucket($bucket)
{
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
$accessKeyId = "accessKeyId ";
$accessKeySecret = "accessKeySecret";
// Endpoint请按实际情况填写。
$endpoint = "http://oss-cn-huhehaote-internal.aliyuncs.com";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
//默认创建私有读写的bucket
//$result = $ossClient->createBucket($bucket);
// 设置存储空间的存储类型为低频访问类型,默认是标准类型。
$options = array(
OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA
);
// 设置存储空间的权限为公共读,默认是私有读写。
$result = $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);
} catch (OssException $e) {
$result = $e->getMessage();
}
return $result;
}
这里有两点要注意,1.需要确定好bucket的权限: 公共读/私有,因为上传到OSS的文件权限会默认集成bucket,2.bucket名称需要注意:只能包括小写字母、数字和短横线(-)。必须以小写字母或者数字开头和结尾。长度必须在 3–63 字节之间。参见https://help.aliyun.com/document_detail/31827.html
- 上传文件
function uploadFile($object, $filePath)
{
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
$accessKeyId = "accessKeyId";
$accessKeySecret = "accessKeySecret";
// Endpoint请按实际情况填写。
$endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
// 存储空间名称
$bucket = "bucket";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$result = $ossClient->uploadFile($bucket, $object, $filePath);
} catch (OssException $e) {
$result = $e->getMessage();
}
return $result;
}
$ossClient->uploadFile($bucket, $object, $filePath); 其中第一个参数表示bucket名称,第二个参数表示上传到OSS的文件,使用 UTF-8 编码。长度必须在 1–1023 字节之间。不能以正斜线(/)或者反斜线(\)开头。参见https://help.aliyun.com/document_detail/31827.html,第三个参数表示将要上传的本地文件
另外在上传文件时发现,地域节点EndPoint用外网链接,上传成功后,返回的是外网文件地址,外网可访问,如果用内网链接,上传成功会返回内网文件地址,外网无法访问