百度云对象存储BOS上传文件(tp5.1)

本文介绍了如何在ThinkPHP5(TP5)框架中集成并使用百度云BOS(Baidu Object Storage)服务进行文件上传。首先,通过Composer或官网SDK下载并配置BOS SDK,然后在配置文件中设置accessKeyId和secretAccessKey。接着,在控制器中引入SDK,创建并设置Bucket权限。最后,实现文件上传到BOS,并删除本地副本。
摘要由CSDN通过智能技术生成

一、下载

两种下载方式

  1. composer require baidubce/bce-sdk-php 虽然使用简单直接use就行,但是不推荐了,因为包好久没更新了
  2. 官网SDK(推荐方式) 下载链接

二、使用步骤

1.配置

  1. 解压下载好的文件放在tp框架根目录下的extend
    在这里插入图片描述
  2. 相应的控制器引入
require_once '../extend/BaiduBce.phar';
use BaiduBce\Services\Bos\BosClient;
use BaiduBce\Services\Bos\CannedAcl;
  1. 配置文件设置
               $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对象存储服务文档:

链接


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值