laravel laravel-filesystem-qiniu上传文件到七牛云存储

      • 场景:
      • 轮子介绍
      • 用法
      • 实列

场景:

  • 个人的云服务器可能过了一些年可能会不在续费,所以有些文档就没有办法保存在个人服务器上了, 站点的迁移很麻烦
  • 公司的站点 有些时候需要文件服务器来支撑多文件的情况,这时候考虑云存储也是不错的

轮子介绍

  • 专门为laravel开发的轮子,配置简单(包括在laravel中以及七牛云中)
    • 名称 overtrue/laravel-filesystem-qiniu
    • 地址 https://github.com/overtrue/laravel-filesystem-qiniu

用法

  • laravel 方面
    • 安装 composer require "overtrue/laravel-filesystem-qiniu"
    • 配置 config/app.php
      • 添加 Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider::class,
    • 配置config/filesystems.php
      • 添加 ‘disks’ => [
        //…
        ‘qiniu’ => [
        ‘driver’ => ‘qiniu’,
        ‘access_key’ => env(‘QINIU_ACCESS_KEY’, ‘xxxxxxxxxxxxxxxx’),
        ‘secret_key’ => env(‘QINIU_SECRET_KEY’, ‘xxxxxxxxxxxxxxxx’),
        ‘bucket’ => env(‘QINIU_BUCKET’, ‘test’),
        ‘domain’ => env(‘QINIU_DOMAIN’, ‘xxx.clouddn.com’), // or host: https://xxxx.clouddn.com
        ],
        ]
  • 七牛云
    • 注册账号, 配置存储空间, 配置CDN域名
  • 调用
    • CDN域名+文件路径
  • over

实列

  • 上传头像到七牛云
    /**
     * 上传文件的头像
     * @throws \Exception
     */
    public function avatarUpload()
    {
        if (!request()->hasFile('img_avatar')) {
            throw new \Exception('缺少上传的图像文件');
        }

        // 存储图片
        $file_name = '/avatars/' . md5(time() . user()->id) . '.' . request()->img_avatar->extension();
           // 存储到七牛云
        $response_upload = \Storage::disk('qiniu')->put($file_name, fopen(request()->img_avatar, 'r'));
        if ($response_upload === false) {
            throw new \Exception('上传到七牛云失败');
        }

        // 更新用户的avatar
        $avatar = 'http://' . env('QINIU_DOMAIN') . $file_name;
        $id = user()->id;
        User::where(compact('id'))->update(compact('avatar'));
        return $avatar;
    }

你可能感兴趣的:(laravel)