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

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

網(wǎng)站開發(fā)如何對接阿里云oss云存儲(chǔ)服務(wù)

發(fā)表日期:2020-10-17 09:57:08   作者來源:劉紅旺   瀏覽:10981   標(biāo)簽:oss云存儲(chǔ)    
一、為什么要用oss

將網(wǎng)站的靜態(tài)資源存儲(chǔ)在oss上,靜態(tài)資源包括網(wǎng)站圖片,html,js,css文件,通過cdn將靜態(tài)資源分布式緩存在各個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)就就近訪問,提高用戶訪問的響應(yīng)速度.

二、oss怎么用

1.在阿里云產(chǎn)品與服務(wù)找到-對象存儲(chǔ)oss
 

對象存儲(chǔ)OSS管理i


 
2.創(chuàng)建Bucket設(shè)置該讀寫權(quán)限(ACL)為 公共讀
 

新建OSS BUCKET


 
3.在AccessKey 管理創(chuàng)建AccessKey
 
 

新建密鑰
ACCESSKEY生成

 
 
三、創(chuàng)建上傳控制器
class AliossController extends FwadminController {
 
    private $oss_host = 'https://youboxunguanwang.oss-cn-shenzhen.aliyuncs.com';//'https://yifajian2020.oss-cn-beijing.aliyuncs.com';//阿里云oss 外網(wǎng)地址endpoint
    private $oss_key_id = '';//阿里云oss Access Key ID
    private $oss_key_secret = '';//阿里云oss Access Key Secret
    private $oss_bucket_name = '';//創(chuàng)建的bucket名稱
    private $oss_endpoint = 'oss-cn-shenzhen.aliyuncs.com';//阿里云OSS外網(wǎng)地址
   /*
    
     * 獲得簽名
     * @param string $path 保存路徑
     * @return json
     */
    public function get_sign($path = '') {     
        $now = time();
        $expire = 300000; //設(shè)置該policy超時(shí)時(shí)間是30s. 即這個(gè)policy過了這個(gè)有效時(shí)間,將不能訪問
        $end = $now + $expire;
        $expiration = $this->gmt_iso8601($end);
        
        //最大文件大小.用戶可以自己設(shè)置
        $condition = array(0=>'content-length-range', 1=>0, 2=>10485760000);
        $conditions[] = $condition;
        //表示用戶上傳的數(shù)據(jù),必須是以$dir開始, 不然上傳會(huì)失敗,這一步不是必須項(xiàng),只是為了安全起見,防止用戶通過policy上傳到別人的目錄
        $start = array(0=>'starts-with', 1=>$this->oss_key_secret, 2=>$path);
        $conditions[] = $start;
        
        $arr = array('expiration'=>$expiration,'conditions'=>$conditions);
        //echo json_encode($arr);
        //return;
        $policy = json_encode($arr);
        $base64_policy = base64_encode($policy);
        $string_to_sign = $base64_policy;
        $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $this->oss_key_secret, true));
 
        $response = array();
        $response['accessid'] = $this->oss_key_id;
        $response['host'] = $this->oss_host;
        $response['policy'] = $base64_policy;
        $response['signature'] = $signature;
        $response['expire'] = $end;
        //這個(gè)參數(shù)是設(shè)置用戶上傳指定的前綴
        $response['dir'] = $path;
      
        echo json_encode($response);
        return ;
    }


   
    function gmt_iso8601($time) {
        $dtStr = date("c", $time);
        $mydatetime = new \DateTime($dtStr);
        $expiration = $mydatetime->format(\DateTime::ISO8601);
        $pos = strpos($expiration, '+');
        $expiration2 = substr($expiration, 0, $pos);
        return $expiration2."Z";
    }
    
    
}
 
上傳文件
/**
 * 上傳文件操作
 */
class AliossdController extends FwadminController {
  /*
public $ossconfig = array(
public $ossconfig = array(
'id'=>'',//Access Key ID
'key'=>'', //Access Key Secret
'bucketname'=>'xxxx', //bucket名稱
'host'=>'https://xxxx.oss-cn-beijing.aliyuncs.com', //上傳提交地址 格式:bucketname+區(qū)別+阿里的域名
'expire' => 30, //過期時(shí)間
'callback_body' => array(
'callbackUrl'=>'', //回調(diào)地址全地址含有參數(shù)
'callbackHost'=>'', //回調(diào)域名
'callbackBody'=>'filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}', //阿里返回的圖片信息
'callbackBodyType'=>'application/x-www-form-urlencoded', //設(shè)置阿里返回的數(shù)據(jù)格式
 ),
'maxfilesize'=>10485760, //限制上傳文件大小 這里是10M
'imghost' =>'https://xxxx.oss-cn-beijing.aliyuncs.com', //前臺(tái)顯示圖片的地址 格式不多說
    );



public function _initialize() {
$this->ossconfig['host']= 'https://'.$this->ossconfig['bucketname'].'.oss-cn-beijing.aliyuncs.com'; //初始化上傳地址
$this->ossconfig['callback_body']['callbackUrl']='https://'.$_SERVER['HTTP_HOST'].'/s****n.php/ossupload/cupload/'; //初始化回調(diào)地址
$this->ossconfig['callback_body']['callbackHost']=$_SERVER['HTTP_HOST']; //初始化回調(diào)域名
}
//獲取policy和回調(diào)地址 一般使用jajx或是在加載頁面的時(shí)候會(huì)用到policy和回調(diào)地址,還有傳限制大小等
public function getpolicy(){
//過期時(shí)間 不得不說那個(gè)T和Z這個(gè)得注意(阿里demo的那個(gè)函數(shù)不知道就是使用不了,我這樣是可以使用的)
$expire = $this->ossconfig['expire']+time();
$expire = date('Y-m-d').'T'.date('H:i:s').'Z';
//$expiration = $this->gmt_iso8601($expire);
//獲取上傳的路徑
$dir = $this->uploadpath(I('path')); //這里要獲得上傳的路徑有一個(gè)參數(shù)path 具體看uploadpath這個(gè)方法,根據(jù)項(xiàng)目自己設(shè)置
//這個(gè)就是policy
$policy = array(
'expiration' =>$expire, //過期時(shí)間
'conditions' =>array(
0=>array(0=>'content-length-range', 1=>0, 2=>$this->ossconfig['maxfilesize']), //限制上傳文件的大小
1=>array(0=>'starts-with', 1=>'$key', 2=>$dir), //這里的'$key' 一定要注意
),
);
//上面的'$key' 自定義使用哪個(gè)參數(shù)來做上傳文件的名稱.
//而這個(gè)'$key'并不是一個(gè)值,只是告訴OSS服務(wù)器使用哪個(gè)參數(shù)來作為上傳文件的名稱
//注意是全路徑,比如前端上傳圖片的使用提交的地址中&key=upload/images/20160127${filename}
//那么在上傳圖片的時(shí)候就要拼接出key的路徑然后和圖片一起提交給oss服務(wù)器
//你上傳的圖片的名子是5566.png ,那么保存在oss的圖片路徑 就是upload/images/201601275566.png;
//而后面的$dir 就是upload/images/
$policy = base64_encode(json_encode($policy));
$signature = base64_encode(hash_hmac('sha1', $policy, $this->ossconfig['key'], true)); //簽名算法
$res = array(
'accessid'=>$this->ossconfig['id'],
'host' =>$this->ossconfig['host'],
'policy' => $policy,
'signature'=>$signature,
'expire' =>$expire,
'callback' =>base64_encode(json_encode($this->ossconfig['callback_body'])),
'dir'  =>$dir,
'filename' =>md5(date('YmdHis').rand(1000,9999)), //我這里使用時(shí)間和隨時(shí)數(shù)據(jù)作為上傳文件的名子
'maximgfilesize'=>307200, //前端JS判斷 可以上傳的圖片的大小 這里是300K
        );
$this->ajaxReturn(array('status'=>0, 'msg'=>'', 'config'=>$res),'json');
}
//回調(diào)處理方法 這里使用OSS demo里的東西,但demo里有個(gè)坑就是一定要告訴其內(nèi)容長度 content-lenght的值具體看 _msg()方法
//這里面還有一些設(shè)置可以查看OSS接口說明的地方,我這里沒有設(shè)置,可以獲到頭部的信息
public function cupload(){
$authorizationBase64 = '';
$pubKeyUrlBase64 = '';
if(isset($_SERVER['HTTP_AUTHORIZATION'])){
$authorizationBase64 = $_SERVER['HTTP_AUTHORIZATION'];
}
if (isset($_SERVER['HTTP_X_OSS_PUB_KEY_URL'])){
$pubKeyUrlBase64 = $_SERVER['HTTP_X_OSS_PUB_KEY_URL'];
}
if ($authorizationBase64 == '' || $pubKeyUrlBase64 == ''){
//header("http/1.1 403 Forbidden");
$this->_msg(array("Status"=>"error",'msg'=>'上傳失敗,請重新上傳'));
}
//獲取OSS的簽名
$authorization = base64_decode($authorizationBase64);
//獲取公鑰
$pubKeyUrl = base64_decode($pubKeyUrlBase64);
$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $pubKeyUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$pubKey = curl_exec($ch);
if ($pubKey == ""){
//header("http/1.1 403 Forbidden");
$this->_msg(array("Status"=>"error",'msg'=>'上傳失敗,請重新上傳'));
}
//獲取回調(diào)body
$body = file_get_contents('php://input');
//拼接待簽名字符串
$authStr = '';
$path = $_SERVER['REQUEST_URI'];
$pos = strpos($path, '?');
if ($pos === false){
$authStr = urldecode($path)."\n".$body;
}else{
$authStr = urldecode(substr($path, 0, $pos)).substr($path, $pos, strlen($path) - $pos)."\n".$body;
}
//驗(yàn)證簽名
$ok = openssl_verify($authStr, $authorization, $pubKey, OPENSSL_ALGO_MD5);
if ($ok == 1){
//增加對上圖片的類型的判斷
if(!in_array(I('mimeType'), array('image/png', 'image/gif', 'image/jpeg'))){
$this->_msg(array("Status"=>"error",'msg'=>'不支持的文件類型'));
}
//if(I('size')>$this->ossconfig['maxfilesize']){
if(I('size')>512000){
$this->_msg(array("Status"=>"error",'msg'=>'上傳圖片過大,無法上傳'));
}
$this->_msg(array("Status"=>"Ok",'msg'=>'','pic'=>$this->ossconfig['imghost'].I('filename')));
}else{
//header("http/1.1 403 Forbidden");
$this->_msg(array("Status"=>"error",'msg'=>'上傳失敗,請重新上傳'));
}
}
//返回要上傳的路徑 注意這里的路徑 最前最不要有/符號,否則會(huì)出錯(cuò)
public function uploadpath($type){
switch ($type) {
case '1':
$patch = 'Upload/images/';
break;
}
return $patch;
}
 
public function gmt_iso8601($time) {
$dtStr = date("c", $time);
$mydatetime = new DateTime($dtStr);
$expiration = $mydatetime->format(DateTime::ISO8601);
$pos = strpos($expiration, '+');
$expiration = substr($expiration, 0, $pos);
return $expiration."Z";
}
public function _msg($arr){
$data = json_encode($arr);
header("Content-Type: application/json");
header("Content-Length: ".strlen($data));
exit($data);
}
//刪除圖片或文件信息 這里有個(gè)坑就簽名算法這塊
//這個(gè)刪除是單一文件刪除,估計(jì)批量刪除可以就沒有問題了
//單一圖片刪除使用delete 所以傳遞的內(nèi)容為空,就不要使用md5加密
//然后刪除成功了,OSS服務(wù)不返回任務(wù)內(nèi)容 坑
//還有就是地址這塊在算簽名的時(shí)候一定要加個(gè)bucketname這點(diǎn)最坑
public function delosspic($picurl){
if(empty($picurl)){
return array('status'=>1, 'msg'=>'要?jiǎng)h除的圖片不能為空');
}
if(strpos($picurl, $this->ossconfig['host'])===false)
{
$picurl = trim($picurl,'/');
 $url = $this->ossconfig['host'].'/'.$picurl;
 $picurl = '/'.$this->ossconfig['bucketname'].'/'.$picurl;
 }
else{
$url = $picurl;
$picurl = str_replace($this->ossconfig['host'], '', $picurl);
$picurl = trim($picurl, '/');
$picurl = '/'.$this->ossconfig['bucketname'].'/'.$picurl;
}
  $url = str_replace('https', 'http', $url);
  
 
$gtime = gmdate("D, d M Y H:i:s").' GMT'; //一定要使用 http 1.1 標(biāo)準(zhǔn)時(shí)間格式
//簽名算法不多說官網(wǎng)的例子也只能無語,沒有PHP版的。本人這個(gè)可以使用驗(yàn)證通過,可以正常刪除文件
$signature = base64_encode(hash_hmac('sha1',"DELETE\n\ntext/html\n".$gtime."\n".$picurl, $this->ossconfig['key'], true));
 
//傳遞頭這里也是坑 上面使用了 text/html靠,在協(xié)議頭里還得加上,要不然會(huì)提示出錯(cuò)。
$headers = array(
'Authorization: OSS '.$this->ossconfig['id'].':'.$signature,
'Date:'.$gtime, //靠時(shí)間也得帶上
'Content-Type: text/html', //傳遞類型要與上面簽名算法一致
 );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_exec($ch);
//靠,OSS刪除文件不返回結(jié)果,沒有返回結(jié)果就表示刪除成功,反之會(huì)有刪除出錯(cuò)信息
}
//測試刪除一個(gè)圖片文件
   public function del_file(){
   $url = I('url');
     $this->delosspic($url);
   echo '1';
   }
}
 
四、其他js 前端文件
https://pan.baidu.com/s/1P6nZ5iL_AR2U3nZpmfQ5AQ
提取碼:ege2
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://m.oulysa.com/news/5871.html
相關(guān)網(wǎng)站設(shè)計(jì)案例
国产亚洲精品无码成人| 久久久久亚州AⅤ无码专区首| 综合Av人妻一区二区三区| 精品无码一区二区高潮久久国产 | 日韩亚洲精品不卡在线| 国产成人综合久久亚洲精品| 精品国产爱在线观看| 亚洲国产精品无码久久一区二区| 欧美人与动牲交a欧美精品| 无码免费又爽又高潮喷水的视频| 欧美性受XXXX黑人XYX性爽| 日韩AV中文无码字幕色最新| 国产午夜草莓视频在线观看| 亚洲熟妇无码一区二区三区导航| 国产精品一区二区久久宅男宅女| AV熟女乱一区二区三区四区| 国产亚洲精品a等一页| 国产欧美日韩精品a在线| 亚洲精品三级片欧美| 性高朝久久久久久久久久| 2021亚洲国产精品无码| 亚洲一区二区三区成人网站| 国内自产视频在线观看| 色欲av伊人久久大香线蕉影院| 久久成人18免费网站| 忘忧草社区在线www韩国| 日韩精品成人亚洲专区| 国产一区日韩二区欧美三区| 精品免费国偷自产| 国产亚洲欧美日韩亚洲中文| 人妻自慰蜜臀喷潮流白浆| 久久九九精品国产av片| 欧美内射深插日本少妇| 搡女人真爽免费视频大全| 综合久久久久久中文字幕| 在线成人精品国产区免费| 亚洲精品中文字幕乱码4区| 欧美日韩国产精品| 久久国产伦精品一区二区三区| 青青草国产在线视频在线观看| 免费无码αv片在线观看潮喷|