medz/oss-stream-wrapper

该软件包已被废弃且不再维护。未建议替代软件包。

阿里云OSS流包装类和阿里云OSS SDK。

v1.0.5 2018-05-31 03:46 UTC

This package is auto-updated.

Last update: 2023-03-01 00:24:54 UTC


README

Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

概述

从名字就可以看出,这个包的主要作用是实现oss的流协议封装,因为它是基于官方sdk,所以也包含了官方sdk的所有功能,可以说,这个包,是在官方的sdk基础上增加了流协议功能。

SDK文档

阿里云OSS SDK

Composer

composer require medz/oss-stream-wrapper

别名包

  • ⚠️如果觉得这个包的名字不是那么容易记住,请看另一个包medz/aliyun-oss这个包作为本包的别名,为了更方便的记忆,当然,类名称有所变化。
  • composer
composer require medz/aliyun-oss

示例

use Medz\Component\StreamWrapper\AliyunOSS\AliyunOSS;

#  如果使用的是medz/aliyun-oss这个包
# use Medz\Component\AliyunOSS\AliyunOSS;

$accessKeyId = "<您从OSS获得的AccessKeyId>"; ;
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如oss-cn-hangzhou.aliyuncs.com>";
$bucket = "<您使用的Bucket名字,注意命名规范>";
$oss = new AliyunOSS($$accessKeyId, $$accessKeySecret, $$endpoint);
$oss->setBucket($bucket);

// 重要步骤,注册流协议(可以注册多个)
$oss->registerStreamWrapper('oss'); // 默认流协议注册的是 oss:// 这个是可以自定义的,就在这里,定义你希望的流协议前缀。

到了这一步,已经成功注册了流协议,接下来看看如何使用,先来看一个最简单的写入文件示例:

file_put_contents('oss://demo/test.txt', 'This is a test content.');

很简单吧?这样一来就可以使用原生的文件操作函数或类来操作oss上的对象了~

案例:如何在symfony/finder中使用自定义流协议。

首先我说一点,我们都知道,finder组件是可以支持s3等云存储的,没错,finder本身不支持云存储,而是通过自定义流协议完成的,这个在组件文档中有例子,我们来看看在oss中如何使用它。

// 上面我们已经注册了流协议,所以这里直接写重点代码。
use Symfony\Component\Finder\Finder;

$finder = new Finder();

$path = 'oss://demo'; //拟定一个已经存在的目录,如果不存在也没关系,流协议中已经支持了目录存在与否的判断,是本地文件一样,没有任何区别。
$finder->files()->in($path);

foreach ($finder as $file) {
  var_dump($file); // Symfony\Component\Finder\SplFileInfo
}

这样,我们就遍历出了在demo目录下存在的文件。

更多

如果你觉得,这个是自定义协议流的很好案例,但是你却不知道具体需要实现什么方法,没关系,你只需要依赖一个只包含一个接口类的组件,继承它,实现里面的方法,就可以完成你的自定义流协议。

组件:medz/stream-wrapper-interface

许可证

MIT