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条评论