php 利用阿里云oss实现托管文件
来源:互联网 发布:淘宝跳蚤街在哪 编辑:程序博客网 时间:2024/05/16 07:55
阿里云oss sdk下载
首先需要下载阿里云的php版sdk,然后引入加载文件autoload.php
以下是我在使用时封装的class
<?phpinclude IA_ROOT . 'autoload.php';use OSS\OssClient; //引入命名空间use OSS\Core\OssException; //引入命名空间class Alioss{ /** * 阿里云 OSS云存储类 * 参考 阿里云链接 https://help.aliyun.com/document_detail/32101.html?spm=5176.doc32103.6.758.d8QJSr * $accessKeyId <从OSS获得的 AccessKeyId> * $accessKeySecret <从OSS获得的 AccessKeySecret> * $endpoint <选定的OSS数据中心访问域名,例如 http://oss-cn-hangzhou.aliyuncs.com> * $bucket <使用的存储空间名称,注意命名规范> * */ private $accessKeyId = "";//阿里云统一$accessKeyId private $accessKeySecret = "";//阿里云统一$accessKeySecret private $endpoint = "";// 新建的bucket的endpoint,测试使用 private $bucket = "";// 新建的bucket,测试使用 /** * 新建一个存储空间(Bucket) * $bucket 存储空间名称,名称规范参考url: https://help.aliyun.com/document_detail/31827.html?spm=5176.doc32101.2.5.PMp0so * */ public function create_Bucket($bucket){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result = $ossClient->createBucket($bucket); if(is_array($result['info'])){ return $result['info']; }else{ return false; } } /** * 新建一个创建虚拟目录(dir) * $bucket 存储空间名称,名称规范参考url: https://help.aliyun.com/document_detail/31827.html?spm=5176.doc32101.2.5.PMp0so * 已存在的文件夹不会覆盖 * */ public function create_ObjectDir($dir){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result = $ossClient->createObjectDir($this->bucket,$dir); if(is_array($result)){ return $result; }else{ return false; } } /** * 上传本地文件至 OSS * $filename 需要上传文件的文件名及后缀 例:test.txt * $filename 可指定存放的文件夹,默认存放在$bucket主目录下 例:test/test.txt * $path 需要上传的本地文件路径,绝对路径 * */ public function upload_File($filename,$path){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result = $ossClient->uploadFile($this->bucket, $filename,$path); if(is_array($result['info'])){ return $result['info']; }else{ return false; } } /** * 上传变量到 OSS * $filename 需要上传文件的文件名及后缀 例:test.txt * $filename 可指定存放的文件夹,默认存放在$bucket主目录下 例:test/test.txt * $content 变量内容,只支持字符串格式。 * */ public function put_Object($filename,$content){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result = $ossClient->putObject($this->bucket, $filename, $content); if(is_array($result['info'])){ return $result['info']; }else{ return false; } } /** * 将文件从服务器下载到本地 * $filename 需要下载的文件名(包含文件夹) 例:test/test.txt * $path 下载文件的保存路径 * 详情参考 https://help.aliyun.com/document_detail/32104.html?spm=5176.doc32101.2.9.ieZCNh#h2-u4E0Bu8F7Du6587u4EF6u5230u672Cu5730u6587u4EF6 * */ public function get_Object($filename,$path){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $options = array( OssClient::OSS_FILE_DOWNLOAD => $path, ); $result=$ossClient->getObject($this->bucket, $filename, $options); return $result; } /** * 判断object是否存在 * $filename object的文件名(包含文件夹) 例:test/test.txt * $result 返回值为ture时表示文件存在,false文件不存在。 * */ public function does_ObjectExist($filename){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result=$ossClient->doesObjectExist($this->bucket, $filename); return $result; } /** * 删除object * $filename object的文件名(包含文件夹) 例:test/test.txt * */ public function delete_Object($filename){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); $result=$ossClient->deleteObject($this->bucket, $filename); if(is_array($result['info'])){ return $result['info']; }else{ return false; } } /** * 列出Bucket内所有目录和文件, 注意如果符合条件的文件数目超过设置的max-keys, 用户需要使用返回的nextMarker作为入参,通过 * 循环调用ListObjects得到所有的文件,具体操作见下面的 listAllObjects 示例 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ public function list_Objects($prefix='',$nextMarker='',$maxkeys=1000,$delimiter = '/'){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); //$prefix = 'black/'; //需要查询的目录 //$delimiter = '/'; //去除文件夹 //$nextMarker = ''; //从文件为名为$nextMarker的下一条开始查询。 //$maxkeys = 1000; //最大返回条数 $options = array( 'delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker, ); $listObjectInfo=$ossClient->listObjects($this->bucket, $options); $objectList = $listObjectInfo->getObjectList(); // 文件列表 if (!empty($objectList)) { foreach ($objectList as $objectInfo) { $filelist[]=$objectInfo->getKey();//文件列表 } } return $filelist; } /** * 列出Bucket内所有目录和文件, 注意如果符合条件的文件数目超过设置的max-keys, 用户需要使用返回的nextMarker作为入参,通过 * 循环调用ListObjects得到所有的文件,具体操作见下面的 listAllObjects 示例 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ public function list_dir_Objects($prefix='',$nextMarker='',$maxkeys=1000,$delimiter = '/'){ $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); //$prefix = 'black/'; //需要查询的目录,默认主目录 //$delimiter = '/'; //去除文件夹 //$nextMarker = ''; //从文件为名为$nextMarker的下一条开始查询。 //$maxkeys = 1000; //最大返回条数 $options = array( 'delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker, ); $listObjectInfo=$ossClient->listObjects($this->bucket, $options); $prefixList = $listObjectInfo->getPrefixList(); // 目录列表 if (!empty($prefixList)) { foreach ($prefixList as $prefixInfo) { $dirlist[]=$prefixInfo->getPrefix();//文件夹列表 } } return $dirlist; }}
阅读全文
0 0
- php 利用阿里云oss实现托管文件
- 阿里云OSS 上传文件
- 阿里云OSS文件下载
- 阿里云OSS 文件上传
- 阿里云OSS文件下载功能简易实现
- 阿里云上传文件,下载文件 oss
- 文件上传-阿里云OSS-存储文件
- PHP 阿里云oss sdk详细介绍
- 阿里云对象存储OSS--实现随时随地上传文件到阿里云
- 阿里云 oss 文件下载进度显示
- 整合阿里云OSS文件上传1
- 整合阿里云OSS文件上传2
- OSS阿里云文件上传 demo
- Jfinal版阿里云OSS文件上传
- Java操作阿里云OSS系统配置文件
- 阿里云OSS上传文件工具类
- android 阿里云OSS文件上传
- java 上传文件到oss(阿里云)
- 史上最全的Spring MVC 中文乱码问题解决方案
- 深度学习总结(六)——梯度弥散、爆炸和过拟合
- web.xml配置简介
- Spring 事务原理
- 判断平年还是闰年
- php 利用阿里云oss实现托管文件
- 研究生教师工资
- cf #336 div1 a
- 基于MapReduce的应用案例
- Linux内核添加设备驱动方法
- 因子分解机
- 数据库
- IIS7 配置 SSL站点
- (云主机&虚拟机)centos7安装nginx