阿里云、七牛云、腾讯云远程附件php简单示例


一、阿里云

/**
 * Created by PhpStorm.
 * User: Mr.Yang
 * Date: 2022/4/13
 * Time: 10:14
 * QQ: 2575404985
 */

namespace app\api\controller;

use OSS\OssClient;
use OSS\Core\OssException;

require_once __DIR__ . '/../../../vendor/alioss/autoload.php';

class Oss {
    private $ossClient = null;
    private $accessKeyId = null;
    private $accessKeySecret = null;
    private $endpoint = null;
    private $bucket = null;
    public function __construct($accessKeyId, $accessKeySecret, $endpoint, $bucket)
    {
        $this->accessKeyId = $accessKeyId;
        $this->accessKeySecret = $accessKeySecret;
        $this->endpoint = $endpoint;
        $this->bucket = $bucket;
        if (!$this->ossClient){
            try{
                $this->ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            } catch(OssException $e) {
                Send::returnMsg(-2, $e->getMessage());
            }
        }
    }

    /**
     * 上传文件
     * @param $path
     * @return null
     * @throws OssException
     */
    public function uploadFile($path)
    {
        $this->ossClient->uploadFile($this->bucket, $path, __ROOT__.'/'.$path);
        @unlink(__ROOT__.'/'.$path);
        return true;
    }

    /**
     * 获取bucket列表
     * @return array
     * @throws OssException
     */
    public function getBucketList()
    {
        $bucketListInfo  = $this->ossClient->listBuckets();
        $bucketList = $bucketListInfo->getBucketList();
        $bucket_array = array();
        foreach($bucketList as $bucket) {
            $name = $bucket->getName();
            $location = $bucket->getLocation();
            $bucket_array[] = array(
                'name' => $bucket->getName(),
                'bucket' => $name.'@'.$location
            );
        }
        return $bucket_array;
    }

    /**
     * 删除文件
     * @param $path
     * @return null
     */
    public function delFile($path)
    {
        return $this->ossClient->deleteObject($this->bucket, $path);
    }
}

二、七牛云

/**
 * Created by PhpStorm.
 * User: Mr.Yang
 * Date: 2022/4/13
 * Time: 14:33
 * QQ: 2575404985
 */

namespace app\api\controller;

use Qiniu\Auth;
use Qiniu\Config;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;

require_once __DIR__ . '/../../../vendor/qiniu/autoload.php';
class Qiniu
{
    private $accesskey = null;
    private $secretkey = null;
    private $bucket = null;
    private $auth = null;

    public function __construct($accesskey, $secretkey, $bucket)
    {
        $this->accesskey = $accesskey;
        $this->secretkey = $secretkey;
        $this->bucket = $bucket;
        if (!$this->auth){
            $this->auth = new Auth($accesskey, $secretkey);
        }
    }

    /**
     * 删除远程文件
     * @param $path
     * @return bool
     * @throws \Exception
     */
    public function uploadFile($path)
    {
        // 生成上传 Token
        $token = $this->auth->uploadToken($this->bucket);
        $uploadMgr = new UploadManager();
        $filePath = __ROOT__.'/'.$path;
        list($ret, $err) = $uploadMgr->putFile($token, $path, $filePath);
        if ($err !== null) {
            return false;
        } else {
            @unlink(__ROOT__.'/'.$path);
            return true;
        }
    }

    /**
     * 删除远程文件
     * @param $path
     * @return array
     */
    public function delFile($path)
    {
        $config = new Config();
        $bucketManager = new BucketManager($this->auth, $config);
        return $bucketManager->delete($this->bucket, $path);
    }
}

三、腾讯云

/**
 * Created by PhpStorm.
 * User: Mr.Yang
 * Date: 2022/4/13
 * Time: 11:11
 * QQ: 2575404985
 */

namespace app\api\controller;

require_once __DIR__ . '/../../../vendor/tencent-cos/index.php';

class Cos
{
    private $cosClient = null;
    private $secretId = null;
    private $secretKey = null;
    private $region = null;
    private $bucket = null;
    private $host = null;

    public function __construct($secretId, $secretKey, $region, $bucket, $host = '')
    {

        $this->secretId = $secretId; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
        $this->secretKey = $secretKey; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
        $this->region = $region; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
        $this->bucket = $bucket; //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
        $this->host = $host;

        if (!$this->cosClient) {
            $config = array(
                //'domain' => $host,
                'region' => $this->region,
                'schema' => 'http', //协议头部,默认为http
                'credentials' => array(
                    'secretId' => $this->secretId,
                    'secretKey' => $this->secretKey
                )
            );
            $this->cosClient = new \Qcloud\Cos\Client($config);
        }
    }

    /**
     * 上传文件
     * @param $path
     * @return object
     */
    public function uploadFile($path)
    {
        $this->cosClient->putObject(array(
            'Bucket' => $this->bucket, //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
            'Key' => $path,
            'Body' => fopen(__ROOT__ . '/' . $path, 'rb')
        ));
        //删除本地文件
        @unlink(__ROOT__.'/'.$path);
    }

    /**
     * 删除文件
     * @param $path
     * @return object
     */
    public function delFile($path)
    {
        return $this->cosClient->deleteObject(array(
            'Bucket' => $this->bucket, //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
            'Key' => $path
        ));
    }
}