其他分享
首页 > 其他分享> > 阿里云对象存储OSS基本使用

阿里云对象存储OSS基本使用

作者:互联网

简介

阿里云对象存储服务(Object Storage Service,简称 OSS)为您提供基于网络的数据存取服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。

初次使用阿里云 OSS,请您先了解阿里云 OSS 常见问题阿里云 OSS 使用限制

阿里云 OSS 将数据文件以对象(Object)的形式上传到存储空间(Bucket)中。您可以进行以下操作:

使用阿里云管理控制台来完成 OSS 基本操作的流程如下:

OSS使用流程

官方文档:https://help.aliyun.com/document_detail/32101.html

sdk 安装

composer require aliyuncs/oss-sdk-php

自定义封装的类

<?php

namespace app\common\ali_oss;
//引入依赖
use OSS\Core\OssException;
use OSS\OssClient;

//require __DIR__ . '/../../../../thinkphp/vendor/autoload.php';


class Oss{
    // 阿里云主账号AccessKey拥有所有API的访问权限
    private static $accessKeyId = 'xxx';
    private static $accessSecret = 'xxxx';

    // Endpoint以杭州为例,其它Region请按实际情况填写。
    private static $endpoint = "http://oss-cn-shanghai.aliyuncs.com";
    // 存储空间名称
    private static $bucket = "xxx";

    //oss 客户端实例
    private static $ossClient = null;

    private function __construct() {}

    /**
     * 获取ossClient实例
     */
    public static function getOssClient(){
        if(Oss::$ossClient === null){
            Oss::$ossClient = new OssClient(Oss::$accessKeyId, Oss::$accessSecret, Oss::$endpoint);
            return Oss::$ossClient;
        }

        return Oss::$ossClient;
    }

    /**
     * @param $bucket 存储空间名称
     */
    public static function isBucket($bucket){
        try {
            $res = Oss::getOssClient()->doesBucketExist($bucket);
        } catch (OssException $e) {
            /*printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");*/
            return false;
        }
        if($res === true) {
            return true;
        }
        return false;
    }

    /**
     * @param $objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg
     * @param $filePath 由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt
     */
    public static function uploadFile($objectName, $filePath ){
        try{
            //检测存储空间是否存在
            if(!Oss::isBucket(Oss::$bucket)){
                echo 'oss存储空间地址有误或不存在';
                return false;
            }
            Oss::getOssClient()->uploadFile(Oss::$bucket, $objectName, $filePath);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return false;
        }
        return true;
    }


    /**
     * 判断该路径在oss上是否存在
     * @param $objectName oss文件路径,例:abc/efg/123.jpg
     */
    public static function isEmptyFileOss($objectName){
        try{

            $exist = Oss::getOssClient()->doesObjectExist(Oss::$bucket, '13246');
        } catch(OssException $e) {
           /* printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");*/
            return false;
        }
        /*print(__FUNCTION__ . ": OK" . "\n");*/
        return true;
    }

    /**
     * @param $objectName 要删除的oss文件路径,例:abc/efg/123.jpg
     */
    public static function deleteFile($objectName){
        try{
            //检测存储空间是否存在
            if(!Oss::isBucket(Oss::$bucket)){
                /*echo 'oss存储空间地址有误或不存在';*/
                return false;
            }
            Oss::getOssClient()->deleteObject(Oss::$bucket, $objectName);
        } catch(OssException $e) {
           /* printf($e->getMessage() . "\n");*/
            return false;
        }
        return true;
    }
}

调用自定义封装的类使用Demo

//判断oss上传是否成功

if(Oss::uploadFile($url, $filePath) != true){
    return false;
}

标签:__,存储,return,objectName,Oss,阿里,false,OSS
来源: https://www.cnblogs.com/makalochen/p/13162227.html