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 在个人中心-》秘钥管理下 file

打开 对象存储,创建空间

file

基于以上配置我们需要的准备工作就做好了。接下来配置一些参数

打开 .env 文件

QINIU_ACCESS_KEY=
QINIU_SECRET_KEY=
QINIU_BUCKET=
QINBIU_DOMAIN=

其中 QINIU_ACCESS_KEYQINIU_SECRET_KEY 就是 个人中心-》秘钥管理下的 秘钥 QINIU_BUCKET 就是创建的 空间名称 ,比如我这里为 hedeqiangQINBIU_DOMAIN 为空间域名

file

所有信息全部准备好了, 接下来就是编码工作了。

ok,我们在控制器中测试下

public function index(\League\Flysystem\Filesystem $filesystem)
{
    $filesystem->write('posts/20200404/file.txt', 'contents');
}

然而我们并没有上传到 七牛云,其实默认 的 storagelocal ,也就是本地,我们打开 file.php 就可以明白。

'default' => 'local',
    'storage' => [
        'local' => [
            'driver' => \Hyperf\Filesystem\Adapter\LocalAdapterFactory::class,
            'root' => __DIR__ . '/../../runtime',
        ],

上传到 runtime 文件夹下了。

那么该怎样上传到七牛云呢?一种方法就是 改变 defaultqiniu

另一种方法就是注入 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 请求上传图片 file

以上就是 Hyperf 的文件系统组件,更多用法 请参考 官方文档 文件系统

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geek.laravelcode.cn

https://geek.idaka.ink

版权许可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 Hyperf 初体验之文件系统-七牛云上传

联系我

编程怪事
暂无回复
0 / 180