一、下载
两种下载方式
- composer require baidubce/bce-sdk-php 虽然使用简单直接use就行,但是不推荐了,因为包好久没更新了
- 官网SDK(推荐方式) 下载链接
二、使用步骤
1.配置
- 解压下载好的文件放在tp框架根目录下的extend
- 相应的控制器引入
require_once '../extend/BaiduBce.phar';
use BaiduBce\Services\Bos\BosClient;
use BaiduBce\Services\Bos\CannedAcl;
- 配置文件设置
$BOS_TEST_CONFIG=config('baidubce.');
$client =new BosClient($BOS_TEST_CONFIG);
//var_dump($client);die;
$bucketName = 'xxxxx';//bucket名字,相当于你在bucket创建好的那个文件夹,如果没有会自动创建。
$exist = $client->doesBucketExist($bucketName);
if(!$exist){
$client->createBucket($bucketName);
}
$client->setBucketCannedAcl($bucketName, CannedAcl::ACL_PUBLIC_READ);//设置Bucket权限
其中的配置TP5框架config目录下新建相应的配置文件 我这边创建的是Baidubce
对应的配置写进去
<?php
// +----------------------------------------------------------------------
// +----------------------------------------------------------------------
// | 百度云Bos对象存储服务
// +----------------------------------------------------------------------
return [
'credentials'=>[
'accessKeyId' =>"xxxxxxxx",
'secretAccessKey'=>'xxxxxxxx'
],
'endpoint' => 'https://bj.bcebos.com',
];
控制台中的BOS服务获取对应的accessKeyId和secretAccessKey
2.调用
废话不多说了,直接上代码吧:$file = $this->request->file('file');
if(empty($file)){
//上传验证
}else{
//上传验证
$info = $file->move('uploads');
if($info){
$BOS_TEST_CONFIG=config('baidubce.');
$client =new BosClient($BOS_TEST_CONFIG);
$bucketName = 'test';//bucket名字 唯一
$client->setBucketCannedAcl($bucketName, CannedAcl::ACL_PUBLIC_READ);//设置Bucket权限
$name_path =str_replace('\\',"/",$info->getSaveName());//文件存储的路径
$client->putObjectFromFile($bucketName,$name_path,"uploads/".$name_path);//上传
$bos_url = $client->generatePreSignedUrl($bucketName,$name_path);//上传文件的地址
$url = "uploads/".$info->getSaveName();//文件本地目录
$ext = $info->getExtension();//文件后缀
$path ="uploads".DIRECTORY_SEPARATOR.substr($info->getSaveName(),0,strpos($info->getSaveName(),DIRECTORY_SEPARATOR));//对应所在的文件夹
unset($info);//如果不释放这个变量下面的unlink()函数会报错。
if (file_exists($url)) {
unlink($url);//删除本地文件
rmdir($path);//删除对应的空文件夹
}
总结
这里对文章进行总结:
以上就是百度云和tp框架的上传文件了,有需要的小伙伴结合自己的需求进行修改,比如我上面是没有放存储在数据库中和一些返回参数的相关的代码的,最后百度云BOS对象存储服务文档: