ksyun s3 簽名計算 php 代碼

來源:互聯網
上載者:User
通過這個Function Compute出來的url,可以直接下載對應的key,也就是你的檔案

<?php   $signableQueryString = array(        'acl', 'delete', 'lifecycle', 'location', 'logging', 'notification',        'partNumber', 'policy', 'requestPayment', 'torrent', 'uploadId',        'uploads', 'versionId', 'versioning', 'versions', 'website',        'response-cache-control', 'response-content-disposition',        'response-content-encoding', 'response-content-language',        'response-content-type', 'response-expires', 'restore', 'tagging', 'cors'    );    function args_deal($request){$query = "?";foreach($request as $k=>$v){$query.=$k;if((strlen($v)!=0 && $v != "") || ($v=='0')){$v = rawurlencode($v);$query.="=".$v.'&';}else{$query.='&';}}return substr($query,0,-1);}       $signableHeaders = array('Content-MD5', 'Content-Type');        function url(array $credentials){    $query = args_deal($credentials["query"]);    $sign = sign_create($credentials);    $object = rawurlencode($credentials['object']);    $url = "http://".$credentials['bucket'].".kss.ksyun.com/".$object.$query.'&Signature='.$sign;    echo $url;        }    function sign_create(array $credentials)    {        $stringToSign = createCanonicalizedString($credentials);        $sign = signString($stringToSign, $credentials["crendit"]["access_key"]);        return $sign;    }    function signString($string, $credentials)    {        return base64_encode(hash_hmac('sha1', $string, $credentials, true));    }    function createCanonicalizedString(array $req, $expires = null)    {    global $signableQueryString;        $buffer = $req['method'] . "\n\n\n";        $bucket = array_key_exists("bucket", $req) ? $req["bucket"]:null;        $buffer .= $bucket ? "/{$bucket}" : '';                $object = array_key_exists("object", $req) ? $req["object"]:null;        if ($object != null){        $object = rawurlencode($object);        }        $buffer .= $object ? "/{$object}" : '';              $query = $req["query"];        $first = true;        foreach ($signableQueryString as $key) {            if ( array_key_exists($key, $query)  ) {            $value = $query[$key];                $buffer .= $first ? '?' : '&';                $first = false;                $buffer .= $key;                if ($value !== "") {                    $buffer .= "={$value}";                }            }        }        return $buffer;        }        $listall = array('crendit' => array('access_id' => "your access id",'access_key' => "your secret key",),'method' => 'GET','bucket' => 'your bucket','object' => 'your file','header' => array(),'query' => array('response-content-disposition' =>'attachment; filename=fname.ext','response-content-type' => 'text/html')           );               echo url($listall);           

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.