七牛云对象储存方式

七牛云 - 对象储存

timg.jpg

对于现在有的程序员还在用本地去存储图片,还是有点费解的
1.占用自己的服务器资源
2.第三方服务商有提供数据分析方便观察
我们应该去合理分配我们的资源储存 七牛云-官方文档
希望这篇文章可以 唤醒 一些不更新自己技术的程序员们,去改变一下自己。

  • 安装 composer 七牛云 (Laravel-china官方文档 || Laravel-学院文档)
composer require zgldh/qiniu-laravel-storage
  • Laravel 里注册 服务提供者
zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class
  • 在框架自带的 config/filesystems.php 里的 disks 中新增如下选项
/**
 * 七牛云储存
 */
 'qiniu' => [
    'driver' => 'qiniu',
    'domains' => [
       'default' => env('QINIU_DEFAULT_URL'),   // 你的七牛域名
       'https' => 'dn-laravelacademy.qbox.me',  // 你的HTTPS域名
       'custom' => 'static.xxxx.xyz',           // 你的自定义域名
     ],
     'access_key' => env('QINIU_AK'),  // AccessKey
     'secret_key' => env('QINIU_SK'),  // SecretKey
     'bucket' => env('QINIU_BUCKET'),  // Bucket名字 (七牛云储存空间的名称)
     'notify_url' => '',  // 持久化处理回调地址
 ],

上面都是官方文档搬过来的,不重要。重要的是下面
首先我们要知道的是,申请注册认证完的七牛云有10G云储存空间,够测试用了
然后我们需要配置一下自己的域名解析,因为七牛云给的域名,默认30天他们就收回了,项目就会打不开任何图片了。

  • 七牛云 - 控制台 - 绑定域名


    七牛云-绑定域名.png
  • 配置域名解析七牛云的 CNAME (域名转发)

    域名解析.png

  • 修改七牛云外链默认域名


    外链默认域名.png

到这里,基本没有什么坑了,只是要注意 七牛云30天收回他们给的默认域名
下面贴一下Api上传图片代码和后台Form表单上传代码Demo:

  • Api 流程是:后端获取七牛云Token返给前端,前端带Token上传图片,后端代码:
第一种 Laravel - 官方方法:
use Illuminate\Support\Facades\Storage;

public function getToken()
{
    /**
     * 使用 Laravel 自带方法
     * 文件储存:https://laravel-china.org/docs/laravel/5.5/filesystem/1319
     */
    $disk = Storage::disk('qiniu'); // 获取七牛云配置
    $token = $disk->uploadToken(env('QINIU_BUCKET')); // 获取上传Token

    return $this->response->success($token);
}
第二种 七牛云 - SDK方法:
  • 前端接口获取七牛token方法上传 (推荐使用这种方法,前后台分离)
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

public function getToken()
{
    /**
     * Auth 类封装了所有的鉴权方式
     */
    $auth = new Auth(env('QINIU_AK'), env('QINIU_SK'));
    // 获取上传Token
    $data['token'] = $auth->uploadToken(env('QINIU_BUCKET'));

    // 上传类 UploadManager 中主要负责文件的上传
    // $upLoadMgr = new UploadManager();
    // 资源管理类 BucketManager 中主要负责空间中文件的管理: 复制,移动,删除,获取元信息
    // $bucketManager = new BucketManager();

    /**
     * 生成图片随机名称
     */
    $data['image_name'] = imageFileRandom();
    $data['image_prefix'] = config('qiniu.namespace');

    return $this->response->success($data);
}
  • Laravel form 表单后台上传图片代码Demo:(后台渲染,不分离模式)
use Illuminate\Support\Facades\Storage;

public function uploadFile()
{
    /**
     * 检测是否有上传文件
     */
    if (request()->hasFile('file')) {
        // 获取文件
        $file = request()->file('file');
        // 获取七牛云配置
        $disk = Storage::disk('qiniu');
        // 获取图片名称
        $fileName = imageFileRandom();
        // 获取文件的绝对路径
        $filePath = $file->getRealPath();
        // 获取base64
        $fileGet = file_get_contents($filePath);

        // 上传七牛云
        $bool = $disk->put($fileName, $fileGet);

        // 检测是否上传成功
        if ($bool) {
            // 获取下载链接
            $data['image_url'] = $disk->downloadUrl($fileName);

            dd($data);
        }
    }

    dd('未获取到文件');
}
blade视图代码

阿里云OSS - 也是云对象储存 (Object Storage Service)

阿里云-logo.jpg

腾讯云COS - 也是云对象储存 (Cloud Object Storage)

COS.png

你可能感兴趣的:(七牛云对象储存方式)