阿里云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条评论

发表评论