天天看點

基于PHP背景上傳圖檔到騰訊雲

上傳本地圖檔到騰訊雲準備事項:

1、在https://console.cloud.tencent.com/cam/capi上先獲得secretId ,secretKey ,APPID三項。先建立秘鑰。

基于PHP背景上傳圖檔到騰訊雲

2.在https://console.cloud.tencent.com/cos5/bucket上建立一個存儲桶,意思就是建立一個裝檔案的桶用來存儲檔案或圖檔。以後上傳的圖檔都會在這裡存儲起來。

基于PHP背景上傳圖檔到騰訊雲

建立存儲桶的話系統給了個接口可以不用手動建立,也可以試着用這個接口來。

try {
    $bucket = "examplebucket-1250000000"; //存儲桶名稱 格式:BucketName-APPID
    $result = $cosClient->createBucket(array('Bucket' => $bucket));
    //請求成功
    print_r($result);
} catch (\Exception $e) {
    //請求失敗
    echo($e);
}
           

以上準備條件做好之後我們開始來上傳圖檔到騰訊雲上。

第一步:先下載下傳php SDK,下載下傳位址:https://cloud.tencent.com/document/product/436/12266

下載下傳解壓後我們看到檔案夾是這樣的:

基于PHP背景上傳圖檔到騰訊雲

注意了,然後把第一個檔案夾整體放在tp架構根目錄的vendor下,不要放錯位置了。放錯位置就加載不出來了。

基于PHP背景上傳圖檔到騰訊雲

第二步:直接上代碼,傳圖檔。

/**
     * 騰訊雲圖檔上傳
     * @param $local_path  本地檔案的絕對路徑
     * @return mixed
     */
    public function uploadTencentCloud($local_path)
    {
        require '../vendor/cos-php-sdk-v5/vendor/autoload.php';
        $secretId = config('QCLOUD.SecretId');
        $secretKey = config('QCLOUD.SecretKey');
        $region = config('QCLOUD.region');

        $cosClient = new \Qcloud\Cos\Client(
            array(
                'region' => $region,
                'schema' => 'http',
                'credentials'=> array(
                    'secretId'  => $secretId ,
                    'secretKey' => $secretKey)));

        try {
            $result = $cosClient->upload(
                $bucket = config('QCLOUD.bucket'),
                $key = md5($local_path.time().rand(1,100000)).'.'.pathinfo($local_path,PATHINFO_EXTENSION),
                $body = fopen($local_path, 'rb')
            );
            if($result){
                return $result['Location'];
            }
        } catch (\Exception $e) {
            echo($e);
        }

    }

           
require '../vendor/cos-php-sdk-v5/vendor/autoload.php';這行如果不行的話,寫成這樣:
  include_once $_SERVER['DOCUMENT_ROOT'].'../vendor/cos-php-sdk-v5/vendor/autoload.php'
  使用include_once 或者require_once引用最好,因為批量傳圖的時候會報錯。那麼我們就知道once的好處了。
           

以上代碼中的存儲桶地域:https://cloud.tencent.com/document/product/436/6224

基于PHP背景上傳圖檔到騰訊雲

最後列印$result對象是這樣的:

GuzzleHttp\Command\Result Object
(
    [ETag] => "1eeec19af2564ccab82ee1622e54a34f"
    [RequestId] => NWVjZTAzYTlfM2RhZDUzNjRfNTZjY2VfOTNkNmNm
    [Key] => a1.jpg
    [Bucket] => hml-1258399702
    [Location] => hml-1258399702.cos.ap-shenzhen-fsi.myqcloud.com/a1.jpg
)
           

代表圖檔上傳成功。

然後我們去背景的存儲桶裡看一下:

基于PHP背景上傳圖檔到騰訊雲

發現已經上傳成功,打開就是我們剛才傳的那張照片。

以上就是騰訊雲上傳圖檔的代碼示例,如果有不懂的可以交流。thank you!