阿里OSS对象存储的简单使用
来源:互联网 发布:大学生网络党校官网 编辑:程序博客网 时间:2024/06/04 12:29
概念理解
阿里有一套自己的相关概念,既然要用人家的产品,就要按照人家的要求来。
Bucket存储空间
Object需要存储的对象
Region地域
Endpoint访问域名
Region和Endpoint要相对应,杭州 Region 的外网 Endpoint 是 oss-cn-hangzhou.aliyuncs.com,内网 Endpoint 是 oss-cn-hangzhou-internal.aliyuncs.com。这个在阿里文档中也有解释。
AccessKeyId和AccessKeySecret是加密解密及身份标识所需数据,每个账号都有,自己去控制台翻翻。
拿到这几个数据后,再下载阿里oss对象存储sdk,就可以进行代码编写操作了。
不过在这之前还是要做几步简单操作
1 去管理控制台创建一个存储空间bucket,一般选标准存储类型,权限选公共读,私有写。
2 设置跨域规则如下图,有特殊要求具体处理。
代码部分
相应类
<?phpnamespace PFinal\Storage;use OSS\Core\OssException;use OSS\OssClient;class AliOss{ protected $id; protected $secret; protected $endpoint; protected $bucket; protected $maxSize = 5; //单位G 阿里单次上传文件限制 public $message; protected $fileName; public function __construct(array $config = array()) { foreach ($config as $key => $item) { $this->$key = $item; } } /** * 上传文件 * * @param object $file * @param string $key * @return bool */ public function put($file, $key) { // 允许上传文件大小 (G) $maxSize = $this->maxSize; //检查文件大小 if ($file->getClientSize() > $maxSize * 1024 * 1024 * 1020) { $this->error = '文件大小不能超过' . $maxSize . 'G'; return false; } //本地临时文件 $tempPath = $file->getPathName(); //原扩展 $originalExtension = $file->getClientOriginalExtension(); //新文件名 $newName = $key . uniqid() . '.' . $originalExtension; //初始化阿里oss $ossClient = new OssClient($this->id, $this->secret, $this->endpoint); //上传 try { $ossClient->uploadFile($this->bucket, $newName, $tempPath); } catch (OssException $e) { $this->message = $e->getMessage(); return false; } $this->fileName = $newName; return true; } /** * 返回文件外链前缀 即除文件名部分 * * @return string */ public function preUrl() { return 'http://' . $this->bucket . '.' . $this->endpoint . '/'; } /** * 返回文件文件名 * * @return string */ public function object() { return $this->fileName; } /** * 删除单个文件 * * @param string $object 非显示url 纯文件名 * @return string */ public function deleteObject($object) { $ossClient = new OssClient($this->id, $this->secret, $this->endpoint); try { $ossClient->deleteObject($this->bucket, $object); } catch (OssException $e) { $this->message = $e->getMessage(); return false; } return true; }}
具体调用
//用户上传文件$file = $request->files->get('avatar');
$aliOss = new AliOss($app['ali_oss']);
//ossif ($file != null) { if ($aliOss->put($file, 'pathway')) { //用户头像存在 删除oss中已有对象 if (!empty($user['avatar'])) { $aliOss->deleteObject($user['avatar']); } $data['avatar'] = $aliOss->object(); } else { return Json::renderWithFalse('修改失败'); }}
注意
上传成功后的资源完整链接如下:
http://somefiles.oss-cn-shenzhen.aliyuncs.com/pathway5971a374da161.jpg
http://somefiles.oss-cn-shenzhen.aliyuncs.com/pathway5971a374da161.jpg
其中somefiles为bucket名称
oss-cn-shenzhen.aliyuncs.com为endpoint名称
pathway5971a374da161.jpg为后台生成的资源名称
前端显示需要完整链接,但是删除功能,只需要传该资源名称就行,不需要带bucket及endpoint名称,否则删除不了。
如果对你有帮助,请打赏1元买水喝。
阅读全文
1 0
- 阿里OSS对象存储的简单使用
- 阿里云的OSS对象存储 java
- 阿里云OSS对象存储
- 阿里对象存储OSS在laravel框架中的使用
- Java使用阿里云OSS对象存储上传图片
- Java使用阿里云OSS对象存储上传图片
- 对象存储服务OSS使用案例之腾讯COS、七牛云存储、阿里OSS
- 对象存储服务OSS使用案例之腾讯COS、七牛云存储、阿里OSS
- How To: 阿里云的对象存储OSS服务的使用.
- java操作阿里云的对象存储OSS
- java操作阿里云的对象存储OSS
- 对阿里云OSS对象存储的评价
- delphi调用阿里云的对象存储服务OSS
- 阿里云OSS(对象存储)的个人见解及使用方法
- YII2.0 接入阿里云的OSS对象存储
- react使用阿里云对象存储,ali-oss, antd upload to ali-oss
- 阿里云 云存储OSS的命令行使用
- 阿里云OSS(对象存储服务)
- 硬件电路点点滴滴“女屌逆袭”2---晶体三极管(1)
- 网页简单对话机器人(无服务端)
- RegionServer异常超时检测
- [Azure]ARM虚拟机整机磁盘快照[4]——从快照还原虚拟机
- lightoj-1104-Birthday Paradox
- 阿里OSS对象存储的简单使用
- Common Dos
- 透彻研究Javascript类型转换
- 取模最短路
- PAT1119. Pre- and Post-order Traversals
- 链表的反转
- webstorm 当前目录替换
- IT名言
- Java static关键字与静态块