当前位置:Gxlcms > PHP教程 > Thinkphp5对接百度云对象存储BOS(代码示例)

Thinkphp5对接百度云对象存储BOS(代码示例)

时间:2021-07-01 10:21:17 帮助过:8人阅读

本篇文章给大家带来的内容是关于Thinkphp5对接百度云对象存储 BOS(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

首先下载SDK包可以在 官网下载 ,或者在项目根目录使用composer 。

composer require baidubce/bce-sdk-php

压缩包里面有五个文件,实际运用到只有两个,然后放在extend文件目录下

在需要使用的控制器进行引入

//如果是用composer 引入的直接use就可以了 :
use BaiduBce\Services\Bos\BosClient;
//如果使用的压缩包:
include_once './extend/BaiduBce.phar';//下面是文件结构
require './extend/SampleConf.php';// 配置信息

BaiduBce.phar
├──src
│   └── BaiduBce                //composer直接下载的就是这个文件
│       ├── Auth                //BCE签名相关
│       ├── Exception           //BCE客户端的异常
│       ├── Http                //BCE的Http通信相关
│       ├── Log                 //BCE日志
│       ├── Services
│       │   └── Bos                   //BOS主目录,此目录必须保留
│       │       ├── BosClient.php     //BOS操作类,所有操作可以通过BosClient类可以完成
│       │       ├── BosOptions.php    //BOS自定义配置
│       │       └── CannedAcl.php     //CannedAcl模块
│       └── Util                //BCE公用工具
└──vendor                       //第三方库

上传方法:

public function test_upload()
    {
        error_reporting(-1);
        $file = request()->file('file');
        if ($file) {
            $info = $file->move(ROOT_PATH . 'uploads');
            if ($info) {
                $BOS_TEST_CONFIG =
                    array(
                        'credentials' => array(
                            'accessKeyId' => 'your accessKeyId',
                            'secretAccessKey' => 'your aecretAccessKey',
                        ),
                        'endpoint' => 'bucket域名',
                    );
                $client = new BosClient($BOS_TEST_CONFIG);//如果是有配置文件直接在配置文件里面配置信息就可以了不需要写上面的数组。
                $bucketName = 'rests';//bucket名字,相当于你在bucket创建好的那个文件夹,如果没有会自动创建。
                $client->putObjectFromFile($bucketName, $info->getSaveName(), 'uploads' . DS . $info->getSaveName());
          //第一个参数:bucket名字、第二个参数:文件名字、第三个参数:文件路径。
                // 成功上传后 获取上传信息
                $data['code'] = 0;
                $data['msg'] = '';
                $data['list'] = [
                    'src' => 'cartoon/' . $info->getSaveName(),
                    'name' => $info->getFilename(),
                    'preview' => 'uploads' . DS . $info->getSaveName(),
                ];
          //上面的返回数据是看个人项目需要的数据
                $url = ROOT_PATH . 'uploads' . DS . $info->getSaveName();
                unset($info);//如果不释放这个变量下面的unlink()函数会报错。
                if (file_exists($url)) {
                    unlink($url);//删除本地文件
                }
                echo json_encode($data);
            } else {
                // 上传失败获取错误信息
                echo $file->getError();
            }
        }
    }

删除方法:

/**
     * 删除百度云存储文件
     * @access public
     * @param  string $object 文件名字
     * @param  string $bucket BucketName
     * @return false|File
     */
    public function file_del($object, $bucket = 'test')
    {
        $BOS_TEST_CONFIG =
            array(
                'credentials' => array(
                    'accessKeyId' => 'your accessKeyId',
                    'secretAccessKey' => 'your secretAccessKey',
                ),
                'endpoint' => 'bucket域名',
            );
        $client = new BosClient($BOS_TEST_CONFIG);
        $client->deleteObject($bucket, $object);
    }

以上就是Thinkphp5对接百度云对象存储 BOS(代码示例)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行