PHP使用阿里云对象存储oss
短信预约 -IT技能 免费直播动态提醒
目录
1.使用composer安装依赖
composer require aliyuncs/oss-sdk-php
目录结构如下:
2.编写代码
getOssClient(); } protected function getOssClient() { try { return new OssClient(self::$accessKeyId, self::$accessKeySecret, self::$endpoint); } catch (OssException $e) { print_r($e->getMessage()); return ''; } } public function createBucket($bucketName) { return self::$client->createBucket($bucketName); } public function uploadOssFile($bucketName, $fileName, $local_file) { // $fileName 表示上传文件到OSS时需要指定包含文件后缀,不包含Bucket名称在内的完整路径,例如abc/efg/123.jpg。 try { return self::$client->uploadFile($bucketName, $fileName, $local_file); } catch (OssException $e) { print_r($e->getMessage()); return ''; } } public function delOssFile($bucketName, $fileName) { // $fileName 表示删除OSS文件时需要指定包含文件后缀,不包含Bucket名称在内的完整路径,例如abc/efg/123.jpg try { return self::$client->deleteObject($bucketName, $fileName); } catch (OssException $e) { print_r($e->getMessage()); return ''; } }}
3.调用
require_once 'OssHandle.php';$obj = new OssHandle();// fileName 除bucket名称外 包含文件路径(文件夹)和文件名称// local_file 绝对地址 或相对地址$info = $obj->uploadOssFile('你的bucket', 'uploads/other/1.jpg', '../images/1.jpg');print_r($info);// fileName 除bucket名称外 包含文件路径(文件夹)和文件名称$bool = $obj->delOssFile('你的bucket', 'uploads/other/2.jpg');print_r($bool);
4.遇到问题
(1) 上传成功 访问发现没有权限
提示:AccessDenied You have no right to access this object because of bucket acl.
解决 修改权限
(2) 接着访问,发现直接下载
解决:
配置自定义域名解析
在访问后,问题解决
(3) 上传文件 发现文件内容是空
额 原来是用了字符串上传方式 “putObject”
换成文件上传方式“uploadFile”后解决
5.自定义域名上传文件
(1) 配置:
参考上面自定义域名解析
(2) 代码修改
如下:
// Endpoint按实际情况填写private static $endpoint = "http://oss.solveset.net";//private static $endpoint = "http://oss-cn-beijing.aliyuncs.com";protected function getOssClient(){ # true为开启CNAME。CNAME是指将自定义域名绑定到存储空间上 return new OssClient(self::$accessKeyId, self::$accessKeySecret, self::$endpoint, true);}
最后,上传完成。
来源地址:https://blog.csdn.net/json_ligege/article/details/127924626
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341