PHP
阿里云OSS获取指定目录文件夹、指定目录下文件
阿里云OSS获取指定目录文件夹、指定目录下文件
最近博主在完成一个需求,需要获取阿里云OSS指定目录下所有文件夹、以及指定目录下所有文件。下面跟大家分享如何获取,首先我们先定义我们两个方法,代码如下:
<?php /** * 阿里云上传图片至OSS封装类 * Created by PhpStorm. * User: pc001 * Date: 2018/10/18 * Time: 17:35 */ USE OSS\OssClient; USE OSS\Core\OssException; require "OssUpload/autoload.php"; class AliYunUpload { /** * 上传图片操作 */ /** * 上传本地文件至阿里云OSS * @param $object * @param $file * @return null */ function uploadFileImage($object, $file, $prefix) { #配置OSS基本配置 $config = array( 'KeyId' => '你的KeyId', 'KeySecret' => '你的KeySecret', 'Endpoint' => '你的Endpoint', 'Bucket' => '你的Bucket', ); $ossClient =new OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']); //组合请求数据 $options = array( 'delimiter' => '/', 'prefix' => $prefix, 'max-keys' => 100, 'marker' => '', ); try { #执行阿里云上传 $result = $ossClient->listObjects($config['Bucket'], $options); $objectList = $result->getPrefixList(); #循环获取数据 $list = array(); foreach ($objectList as $info) { //去除部分 $firstName = str_replace($prefix, '', $info->getPrefix()); $fileName = str_replace('/', '', $firstName); $list[] = $fileName; } #返回 return array('code' => 200, 'data' => $list); } catch (OssException $e) { return array('code' => 404, 'msg' => $e->getMessage()); } } /** * 获取某个文件下所有文件 * @param $prefix * @param $number * @return array */ function listObjectsFile($prefix, $number) { #配置OSS基本配置 $config = array( 'KeyId' => '你的KeyId', 'KeySecret' => '你的KeySecret', 'Endpoint' => '你的Endpoint', 'Bucket' => '你的Bucket', ); $ossClient =new OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']); //组合请求数据 $options = array( 'delimiter' => '/', 'prefix' => $prefix, 'max-keys' => $number, 'marker' => '', ); try { #执行阿里云上传 $result = $ossClient->listObjects($config['Bucket'], $options); $objectList = $result->getObjectList(); $list = array(); foreach ($objectList as $info) { //去除部分 $size = $info->getSize(); if ($size > 0) { $list[] = $info->getKey(); } } return array('code' => 200, 'data' => $list); } catch (OssException $e) { return array('code' => 404, 'msg' => $e->getMessage()); } } }
下面便是调用代码:
require 'AliYunUpload.php'; #初始化类 $aliyun = new AliYunUpload(); #例1:获取指定文件夹下文件夹列表 $object = "jinrong/"; $objectList = $aliyun->listObjects($object); #例2:获取指定文件夹下文件列表 $objectUrl = "jinrong/jiaohang/"; $fileList = $aliyun->listObjectsFile($objectUrl, 100);
另外,阿里云支持获取图片的尺寸大小,只要传入阿里云OSS图片绝对路径,方法如下
/** * 获取图片尺寸、大小信息 * @param $imageUrl * @return mixed */ function getImageData($imageUrl) { $url = $imageUrl . "?x-oss-process=image/info"; // 初始化curl $ch = curl_init(); // 设置超时 curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 运行curl,结果以jason形式返回 $res = curl_exec($ch); curl_close($ch); // 取出数据 $data = json_decode($res, true); //返回 return $data; }
这样我们便成功的获取阿里云OSS指定目录下所有文件夹、指定目录下所有文件
0条评论