亚洲国产精品成人无码区,公天天吃我奶躁我的比视频,亚洲国产欧美视频亚洲国产精品一区二区成人片不卡,天天躁日日躁狠狠躁视频2021,起视碰看97视频在线少妇久久久久久人妻无码, 芒果乱码一线二线三线新区 ,亚洲熟妇无码AⅤ不卡在线播放,人妻少妇乱子伦无码专区

400-800-9385
網站建設資訊詳細

亞馬遜s3-OSS存儲文件上傳讀取接口

發(fā)表日期:2021-11-24 10:13:44   作者來源:劉紅旺   瀏覽:7531   標簽:OSS存儲    OSS存視頻    
專業(yè)做網站的都知道,OSS存儲是個好東西,如果你想網站上放個視頻,如果采用第三方優(yōu)酷、土豆視頻,有很多廣告,放在自己網站上非常不友好。如果直接放在網站服務器,則占用很多帶寬,增加服務器負擔。所以OSS存儲的出現(xiàn),解決了這個問題,速度快又不占用服務器帶寬,又便宜。

還可以利用OSS存儲,實現(xiàn)多服務器部署網站。

國外網站如何將資料存在oss,除了阿里云在亞馬遜也同樣有類似的服務Amazon S3對象存儲
這里用的的是 thinkphp3.2 和 亞馬遜s3接口
接口實例地址:
 
新建一個class
引入api文件
 
Vendor('Amazon.autoloader');
use Aws\S3\S3Client;
use Aws\S3\MultipartUploader;
 
class AwsFile
{
    public $key;
public $secret;
//鏈接亞馬遜服務器
   /**
     * Aws類初始化
     *
     */
    public function __construct()
    {
       
        $this->key ='xxxxxXXXX' ;//key
        $this->secret = 'xxxxxXXXXXXXX';//secret
        $this->region = "ap-southeast-1";//區(qū)域
        $this->version = 'latest';//版本號
        $this->endpoint ='http://s3.ap-southeast-1.amazonaws.com';//公網訪問地址
        $this->bucket = 'xxxxx';//桶
        try {
         
            $credentials = new \Aws\Credentials\Credentials($this->key, $this->secret);
            $this->client = new \Aws\S3\S3Client([
                'version' => $this->version,
                'region' => $this->region,
                'credentials' => $credentials,
                'endpoint' => $this->endpoint,
                //設置訪問權限  公開,不然訪問不了
                'ACL'    => 'public-read',
//                'debug'   => true
            ]);
        } catch (Exception $e) {
            $msg = $e->getMessage();
            Log::add(__PUBLIC_ . '|s3ImageConstruct', $msg);
            return false;
        }
        return true;
 
    }
 
//基礎上傳
    /**
     * upload file 基礎上傳
     * name 文件名
     * fileUrl 文件路徑(絕對地址)
     */
    public function uploadFile($file_name, $file_path,$dir)
    {
        $key = $file_name;
        $fileUrl = $file_path;
        if (!file_exists($fileUrl)) {
            return  "當前目錄中,文件" . $fileUrl . "不存在";
        }
        try {
            $result = $this->client->putObject([
                'Bucket' => $this->bucket,
                'Key' => trim($dir.$key),
                'Body' => fopen($fileUrl, 'rb'),
                'ACL'    => 'public-read',
            ]);
            $fileUrl = $result->get('ObjectURL');
            return $fileUrl;
        } catch (Exception $e) {
            $msg = $e->getMessage();
           
            return $msg;
        }
    }
 
 
    /**
     * 自定義分段上傳
     */
    public function multipartUploader($file_name, $file_path)
    {
        $source = $file_path;
        //多部件上傳
        $uploader = new MultipartUploader($this->client, $source, [
            //存儲桶
            'bucket' => $this->bucket,
            //上傳后的新地址
            'key'    => $file_name,
            //設置訪問權限  公開,不然訪問不了
            'ACL'    => 'public-read',
            //分段上傳
            'before_initiate' => function (\Aws\Command $command) {
                // $command 是CreateMultipartUpload操作
                $command['CacheControl'] = 'max-age=3600';
            },
            'before_upload'   => function (\Aws\Command $command) {
                // $command 是一個UploadPart操作
                $command['RequestPayer'] = 'requester';
            },
            'before_complete' => function (\Aws\Command $command) {
                // $command 是一個CompleteMultipartUpload操作
                $command['RequestPayer'] = 'requester';
            },
        ]);
        try {
            $result = $uploader->upload();
            //上傳成功--返回上傳后的地址
            $resultOne = $this->client->getObjectUrl($this->bucket, $file_name);
            $data = [
                'type' => '1',
                'data' => urldecode($result['ObjectURL']),
                'resultOne' => $resultOne,
            ];
        } catch (Aws\Exception\MultipartUploadException $e) {
            //上傳失敗--返回錯誤信息
            $uploader =  new MultipartUploader($this->client, $source, [
                'state' => $e->getState(),
            ]);
            $data = [
                'type' => '0',
                'data' =>  $e->getMessage(),
            ];
        }
        return $data;
    }
 
 /**
     * s3根據(jù)文件名稱獲取url
     * fileName 文件名稱
     * publicPath 證書路徑
     * expire 過期時間
     * $result = $this->client->getObjectUrl($this->bucket, $name);//此方法將返回給定存儲桶和密鑰的未簽名 URL。
     */
    public function getFileUrl($fileName, $publicPath, $expire = 1)
    {
        if (empty($this->bucket)) {
            return  "";
        }
        try {
            //創(chuàng)建預簽名url
            $cmd = $this->client->getCommand('GetObject', [
                'Bucket' => $this->bucket,
                'Key' => trim($fileName)
            ]);
            $request = $this->client->createPresignedRequest($cmd, '+' . $expire . 'weeks');
            $presignedUrl = (string)$request->getUri();//獲取簽名對象的 URL
            //檢驗訪問url是否有效
            $array = get_headers($presignedUrl, 1);
            //dump($array);
            if (preg_match('/200/', $array[0])) {
                //Log::add(__PUBLIC_ . '|s3GetFileUrlSuccess', "下載證書文件成功,url:".$presignedUrl."fileName".$fileName);
                return $presignedUrl;
            } else {
                
                return $presignedUrl ;
                exit;
            }
        } catch (Aws\S3\Exception\S3Exception $e) {
            $msg = $e->getMessage();
          
            return false;
        }
    }
 
如沒特殊注明,文章均為方維網絡原創(chuàng),轉載請注明來自http://www.oulysa.com/news/6294.html
亚洲av片不卡无码久久蜜芽| 中文字幕乱码中文乱码二区| 国产三级韩国三级日产三级| 亚洲欧美日韩综合俺去了伊人| 学生被强奷到高潮喷水在线观看| 国产精品久久久久久久精品| 高潮到爆的无码喷水视频| 曰韩无码二三区中文字幕| 久久精品成人无码观看| 久久99国产精品久久99果冻传媒| 国产日韩欧美欧美精品一区二区| 7777精品伊久久久大香线蕉| 成人午夜亚洲精品无码网站| 国产精品污WWW一区二区三区| 国产精品尹人在线观看免费| 亚洲性猛交xxxx在线aⅴ亚洲中文字幕| 久久精品a一国产成人免费网站| 亚洲?V无码乱码在线观看裸奔| 色播久久人人爽人人爽| 99精品无人区乱码1区2区3区| 日本中文字幕不卡在线一区二区| 日本xxxx高清色视频在线播放| 二级韩国片完整版日韩电影| 国产乱子伦精品无码码专区| 看永久免费无卡无码?级毛片| 国产精品无需播放器在线观看| 欧美a欧美乱码一二三四区| 亚洲人成免费在线| 亚州精品无码久久aV字幕| 麻豆国产在线视频区| 亚洲免费高清视频| 欧美牲交VIDEOSSEXESO欧美| 国产高清不卡无码视频| 欧美日产国产精品| 国产日韩精品欧美一区| 日本欧美亚洲高清在线看| 国产精品亚洲а∨无码播放| 日韩精品极品视频在线观看| 国产成人高潮在线观看视频| 精品久久伊人中文字幕| 国产精品无码一区二区三区电影|