阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。这里总结一下如何在laravel中使用OSS PHP SDK完成常见操作,如创建存储空间、上传文件、下载文件等。
一、安装
composer require aliyuncs/oss-sdk-PHP
安装完成后直接使用即可,不用安装任何依赖,非常方便!不过在此之前你需要去阿里云申请accessKeyId和accessKeySecret,然后根据你的存储地址设置endpoint即可;大家可以在config中创建一个文件单独存放配置文件,方便后续修改。
二、使用
安装完成我们开始在laravel中使用阿里云OSS
1、创建存储空间
创建存储空间即创建$bucket,如果手动创建了就不需要执行此操作了:
use OSS\OssClient;use OSS\Core\OssException;$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称$bucket = "<yourBucketName>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->createBucket($bucket); } catch (OssException $e) { print $e->getMessage(); }
2、上传文件
<?PHPuse OSS\OssClient;use OSS\Core\OssException;$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称$bucket= " <yourBucketName>";// 文件名称$object = " <yourObjectName>";$content = "Hi, OSS.";$filePath = "文件地址";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content); // $ossClient->uploadFile($bucket, $object, $filePath);} catch (OssException $e) { print $e->getMessage(); }
其中你可以有两种模式,putObject需要将$content内容写到oss中,比如图片的代码,二进制文件!而uploadFile只需要指定文件地址即可,需要完整路径和文件名称。
3、下载文件
<?PHPuse OSS\OssClient;use OSS\Core\OssException;$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称$bucket= "<yourBucketName>";// 文件名称$object = "<yourObjectName>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $content = $ossClient->getObject($bucket, $object); print("object content: " . $content); } catch (OssException $e) { print $e->getMessage(); }
4、列举文件
以下代码用于列举指定存储空间下的文件。默认列举100个文件。
<?PHPuse OSS\OssClient;use OSS\Core\OssException;$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称$bucket= "<yourBucketName>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $listObjectInfo = $ossClient->listObjects($bucket); $objectList = $listObjectInfo->getObjectList(); if (!empty($objectList)) { foreach ($objectList as $objectInfo) { print($objectInfo->getKey() . "\t" . $objectInfo->getSize() . "\t" . $objectInfo->getLastModified() . "\n"); } } } catch (OssException $e) { print $e->getMessage(); }
5、删除文件
<?PHPuse OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称$bucket= "<yourBucketName>";// 文件名称$object = "<yourObjectName>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object); } catch (OssException $e) { print $e->getMessage(); }
授权以及安全认证
其实还有很多方法,不过平常不太常用,如果又需要直接参考官网即可:阿里云OSS PHP文档