天天看點

tp3.2阿裡oss添加,删除圖檔

**tp3.2阿裡oss添加,删除圖檔**
           

下載下傳SDK:https://github.com/aliyun/aliyun-oss-php-sdk

釋放:Library/Vendor

1.

配置:convention.php:

‘OSS’ => array(

‘ACCESS_KEY_ID’ => ‘******’, //從OSS獲得的AccessKeyId

‘ACCESS_KEY_SECRET’ => ‘******’, //從OSS獲得的AccessKeySecret

‘ENDPOINT’ => ‘******’, //您標明的OSS資料中心通路域名,例如oss-cn-hangzhou.aliyuncs.com

‘BUCKET’=>’******’, //要存放的檔案夾

),

2.

//oss上傳,删除圖檔

定義函數:

function oss_upload($name,$link){
  //$name要上傳圖檔的子目錄,$link要删除的圖檔連結
	$url='https://****.oss-cn-shenzhen.aliyuncs.com/';   //上傳的oss位址
	//本地上傳類
    $upload = new \Think\Upload();// 執行個體化上傳類
    $upload->maxSize    =     3145728 ;// 設定附件上傳大小
    $upload->exts       =     array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳類型
    $upload->rootPath   =     'Uploads/'; // 設定附件上傳根目錄
    $upload->savePath   =     $name.'/'; // 設定附件上傳(子)目錄
    $upload->autoSub    = true;
    $upload->subName    = array('date','Ymd');

    $info               = $upload->upload();

   //oss上傳類
    vendor('OSS.autoload');
    $ossConfig          = C('OSS');
    $accessKeyId        = $ossConfig['ACCESS_KEY_ID'];//阿裡雲OSS  ID
    $accessKeySecret    = $ossConfig['ACCESS_KEY_SECRET'];//阿裡雲OSS 秘鑰
    $endpoint           = $ossConfig['ENDPOINT'];//阿裡雲OSS 位址
    $ossClient          = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $bucket             = $ossConfig['BUCKET']; //oss中的檔案上傳空間
   

    if (!$info) {// 上傳錯誤提示錯誤資訊
        //處理上傳錯誤資訊
        $this->error($upload->getError());
    } else {// 上傳成功

        // 删除oss圖檔
        if(!empty($link)){
            $edit=explode('com/',$link);
            $edit=$edit[1];
            $ossClient->deleteObject('v388', $edit);
        }

        foreach ($info as $k => $v){
            $object     = $v['savepath'].$v['savename'];//想要儲存檔案的名稱

            //這個數組是存上傳成功以後傳回的通路路徑,多檔案時使用implode函數将其組合

            $downlink[] = $bucket.'.'.$endpoint.'/'.$object;

            $file       = './Uploads/' .$v['savepath'].$v['savename'];//本地檔案路徑
            // var_dump( $v['savename']);die;
            try {

                $ossClient->uploadFile($bucket, $object, $file);
                //上傳成功
                //這裡可以删除上傳到本地的檔案。
                unlink($file);

                $add=$url.$object;
                echo json_encode(array('error' => 0, 'url' =>$add));

            } catch (OssException $e) {
                //上傳失敗
                printf($e->getMessage() . "\n");
                return;
            }
        }
    }
 }