PHP实现华为OBS存储

一:华为OBS存储文档地址

官方文档:https://support.huaweicloud.com/obs/index.html

github地址:https://github.com/huaweicloud/huaweicloud-sdk-php-obs

二:安装华为OBS拓展

复制代码
composer require obs/esdk-obs-php

三:华为OBS使用教程

1:初始化

复制代码
$obsClient = new ObsClient([
      'key' => 'ACCESS_KEY_ID',
      'secret' => 'SECRET_ACCESS_KEY',
      'endpoint' => 'endpoint地址',
]);

2:创建桶

复制代码
// 创建桶
$resp = $obsClient->createBucket([
       //桶名称
       'Bucket' => 'bucketname',
       // 设置桶访问权限为公共读,默认是私有读写
       'ACL' => ObsClient::AclPublicRead,
       // 设置桶的存储类型为标准存储类型
       'StorageClass' => ObsClient::StorageClassStandard,
       // 设置桶区域位置
       'LocationConstraint' => 'bucketlocation'
]);

3:判断桶是否存在

复制代码
try{
       $resp = $obsClient->headBucket([
              //桶名称
              'Bucket' => 'bucketname'
       ]);
       printf("Bucket exists");
}catch (\Obs\Common\ObsException $obsException){
       if($obsException->getStatusCode() === 404){
              printf("Bucket does not exist");
       }else{
              printf("ExceptionCode:%s\n", $obsException->getExceptionCode());       
              printf("getExceptionMessage:%s\n", $obsException->getExceptionMessage());
       }
}

4:文件上传

复制代码
$resp = $obsClient->putObject([
       //桶名称
       'Bucket' => 'bucketname',
       //文件保存地址
       'Key' => 'test.txt',
       //上传文件地址
       'SourceFile' => 'test/test.txt',
       //设置上传文件访问权限(公共读),默认继承桶的访问权限
       'ACL' => ObsClient::AclPublicRead
]);

5:获取上传的文件地址

复制代码
$internal = false;//是否使用内网地址访问
$bucket = '存储桶名称';
$rootPath = '文件存储根目录';
if ($internal) {
    $endpoint = 'Endpoint内网地址';
} else {
    $endpoint = 'bucket存储对象自定义域名地址';
    if ($endpoint) {
        return "https://{$endpoint}/" . '存储地址';
    }
    $endpoint = 'Endpoint外网地址';
}
 
return "https://{$bucket}.{$endpoint}/" . '存储地址';

其他方法请参考官方文档

相关推荐
李昊哲小课20 小时前
Python办公自动化教程 - 第7章 综合实战案例 - 企业销售管理系统
开发语言·python·数据分析·excel·数据可视化·openpyxl
Hou'20 小时前
从0到1的C语言传奇之路
c语言·开发语言
不知名的老吴20 小时前
返回None还是空集合?防御式编程的关键细节
开发语言·python
迈巴赫车主21 小时前
蓝桥杯3500阶乘求和java
java·开发语言·数据结构·职场和发展·蓝桥杯
小菜鸡桃蛋狗21 小时前
C++——string(上)
开发语言·c++
chushiyunen21 小时前
python pygame实现贪食蛇
开发语言·python·pygame
身如柳絮随风扬21 小时前
Lambda、方法引用与Stream流完全指南
java·开发语言
jinanwuhuaguo1 天前
人工智能的进化阶梯:AI、ANI、AGI与ASI的核心区别与深度剖析
开发语言·人工智能·agi·openclaw
清空mega1 天前
C++中关于数学的一些语法回忆(2)
开发语言·c++·算法
Mr_Xuhhh1 天前
从理论到实践:深入理解算法的时间与空间复杂度
java·开发语言·算法