七牛云的使用

参考-吕昌博客
我们可以直接进入官网的php手册
我发现看composer里面的qiniu/qiniu组建是没有用的

  • .env代码
    QINIU_BUCKET=test
    QINIU_ACCESSKEY=xxxx // AccessKey
    QINIU_SECRETKEY=xxxx //SecretKey
    QINIU_DOMAIN=xxxx.bkt.clouddn.com

准备部分

第一步-创建密钥AccessKey,SecretKey

首先去七牛云官网申请一个账号,然后选择个人中心->密钥管理->创建密钥

点击个人中心
个人中心页面
密钥管理页面

第二部 创建 BUCKET空间

首页->对象存储->创建空间
这个时候填写的的存储空间名称 就是我们所需要的QINIU_BUCKET

image.png

第三部分 QINIU_DOMAIN

首页->对象存储
这个时候测试域名的那个地址,就是我们所需要的 QINIU_DOMAIN

image.png

使用部分

  • 首先运行 composer require qiniu/php-sdk
  • 上传大概步骤
     ...
  
      $accessKey = 'Access_Key';
      $secretKey = 'Secret_Key';
      $auth = new Auth($accessKey, $secretKey);
      // 空间名  https://developer.qiniu.io/kodo/manual/concepts
      $bucket = 'Bucket_Name';
      // 生成上传Token
      $token = $auth->uploadToken($bucket);
      // 构建 UploadManager 对象
      $uploadMgr = new UploadManager();
       list($ret, $error) = $upManager->put($token, 'formput', 'hello world');
       ...
  • 实例代码
    模板
    <html>
    <form action="test" method="post"
    enctype="multipart/form-data">
    {{ csrf_field() }}
    <label for="pic">Filename:</label>
    <input type="file" name="pic" id="file" />
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>
    </html>

    // 引入
    use Qiniu\Auth;  
    use Qiniu\Storage\UploadManager;
    
    /**
       * 一个表单提交,其中有图片上传的云存储例子.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return \Illuminate\Http\Response
       */
      public function store(\Request $request)
      {
          //
    
          $data = \Request::all();
          $file = $request->file('pic') ;
          if(!$file){
              return back() ;
          }
          if(!$file->isValid()){
              return back() ;
          }
           // 需要填写你的 Access Key 和 Secret Key
          $accessKey = env('QINIU_ACCESSKEY');
          $secretKey = env('QINIU_SECRETKEY');
          // 构建鉴权对象
          $auth = new Auth($accessKey, $secretKey);
          // 要上传的空间
          $bucket = env('QINIU_BUCKET');
          // 生成上传 Token
          $token = $auth->uploadToken($bucket);
          // 要上传文件的本地路径
          $filePath = $file->getRealPath();
          // 上传到七牛后保存的文件名
          $date = time();
          $key = 'demo/'.$date.'.'.$file->getClientOriginalExtension();
          // 初始化 UploadManager 对象并进行文件的上传。
          $uploadMgr = new UploadManager();
          // 调用 UploadManager 的 putFile 方法进行文件的上传。
          list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
          if ($err !== null) {
              return response()->json(['ResultData'=>'失败','info'=>'失败']);
          } else {
              $info = ['name'=>$data['name'],
                      'level'=>$data['level'],
                      'pic'=>$ret['key'],
                      'addtime'=>$date,
                      'status'=>'1'];
              $ids = \DB::table('data_demo')->insertGetid($info);
              if($ids){
                  return redirect('/demo');
              }else{
                  dd('添加失败');
              }
          }
      }
    

文件下载

<?php
    require 'path_to_sdk/vendor/autoload.php';
    // 引入鉴权类
    use Qiniu\Auth;
    // 需要填写你的 Access Key 和 Secret Key
    $accessKey = 'Access_Key';
    $secretKey = 'Secret_Key';
    
    // 构建鉴权对象
    $auth = new Auth($accessKey, $secretKey);
    //baseUrl构造成私有空间的域名/key的形式
    $baseUrl = 'http://domain/key';
    $authUrl = $auth->privateDownloadUrl($baseUrl);
    echo $authUrl;
?>

删除单个文件

 public function test2()
    {
        $accessKey = env('QINIU_ACCESSKEY');
        $secretKey = env('QINIU_SECRETKEY');
        // 构建鉴权对象
        $auth = new Auth($accessKey, $secretKey);
//        dd($auth);
        // 要上传的空间
        $bucket = env('QINIU_BUCKET');
        //初始化BucketManager
        $bucketMgr = new BucketManager($auth);
        //你要测试的空间, 并且这个key在你空间中存在
        $key = 'demo/1486372794.jpg';
        //删除$bucket 中的文件 $key
        $err = $bucketMgr->delete($bucket, $key);
        echo "\n====> delete $key : \n";
        if ($err !== null) {
            var_dump($err);
        } else {
            echo "Success!";
        }
    }

我们查看图片链接会发现,图片的url其实是 QINIU_DOMAIN+图片名字

  • 图片所在位置是 首页->对象存储-> 内容管理
image.png
$uploadMgr->putFile($token, $key, $filePath)结果

在创建空间的时候,选择公开空间或者私有空间,我们这套代码都实用

image.png

推荐阅读更多精彩内容