Hyperf 这款优秀的框架功能越来越完善,上周发布的 文件系统组件可谓是很赞。版本为 v1.1.22
所以今天我们就使用七牛云来测试下文件系统组件
首先安装组件
composer require hyperf/filesystem
因为我们使用七牛云上传,所以需要安装 overtrue/flysystem-qiniu
适配器
composer require overtrue/flysystem-qiniu
最后发布配置文件
php bin/hyperf.php vendor:publish hyperf/filesystem
OK,接下来我们到 七牛云 控制台 获取 AK、SK,以及创建空间
AK、SK 在个人中心-》秘钥管理下
打开 对象存储,创建空间
基于以上配置我们需要的准备工作就做好了。接下来配置一些参数
打开 .env
文件
QINIU_ACCESS_KEY=
QINIU_SECRET_KEY=
QINIU_BUCKET=
QINBIU_DOMAIN=
其中 QINIU_ACCESS_KEY
和 QINIU_SECRET_KEY
就是 个人中心-》秘钥管理下的 秘钥
QINIU_BUCKET
就是创建的 空间名称 ,比如我这里为 hedeqiang
,QINBIU_DOMAIN
为空间域名
所有信息全部准备好了, 接下来就是编码工作了。
ok,我们在控制器中测试下
public function index(\League\Flysystem\Filesystem $filesystem)
{
$filesystem->write('posts/20200404/file.txt', 'contents');
}
然而我们并没有上传到 七牛云
,其实默认 的 storage
是 local
,也就是本地,我们打开 file.php 就可以明白。
'default' => 'local',
'storage' => [
'local' => [
'driver' => \Hyperf\Filesystem\Adapter\LocalAdapterFactory::class,
'root' => __DIR__ . '/../../runtime',
],
上传到 runtime 文件夹下了。
那么该怎样上传到七牛云呢?一种方法就是 改变 default
为 qiniu
。
另一种方法就是注入 Hyperf\Filesystem\FilesystemFactory
来动态选择使用哪种驱动。
class IndexController extends AbstractController
{
public function index(\Hyperf\Filesystem\FilesystemFactory $factory)
{
$qiniu = $factory->get('qiniu');
$qiniu->write('posts/20200404/file.txt', 'contents');
}
}
我们是将一段文本保存为 txt 文件,那么我们该怎样上传文件呢?比如上传图片,表单上传图片
class IndexController extends AbstractController
{
public function index(\Hyperf\Filesystem\FilesystemFactory $factory)
{
$qiniu = $factory->get('qiniu');
$file = $this->request->file('file');
$extension = strtolower($file->getExtension()) ?: 'png';
$filename = time() . '_' . Str::random(10) . '.' . $extension;
var_dump($qiniu->put($filename,file_get_contents($file->getRealPath())));
}
}
以下是 Postman 请求上传图片
以上就是 Hyperf 的文件系统组件,更多用法 请参考 官方文档 文件系统
关于极客返利
极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。
版权许可
本作品采用 知识共享署名 4.0 国际许可协议 进行许可。转载无需与我联系,但须注明出处,注明文章来源 Hyperf 初体验之文件系统-七牛云上传