花了点时间折腾了一下七牛云存储的一个基本上传逻辑,先放一下过些日子整理一个sdk出来

不得不再吐槽一下七牛,你真的是太可以了- -# 云存储做成你这样,也怪不容易的,好变态的接口啊

// CLI 模式下执行
<?php

error_reporting(E_ALL);


$localfile = __DIR__.'/do.png';

$access_key = 'n9fxNfp2oiHQJBR-kBJljkmNat9kAYO-Dg-oKgMP';
$secret_key = 'aaaaaaaa';

$token = Array();

// 定义参数
$bucket = 'cevin';

$filename = 'do.png';
$deadline = time()+3600;



// 组成Policy
$param = array(
    'scope' => "{$bucket}:{$filename}",
    'deadline' => $deadline
);
$param = json_encode($param);
$policy = safeEncode($param);

// 生成签名
$sign = hash_hmac('sha1',$policy,$secret_key,true);
$sign = safeEncode($sign);


// 生成上传凭证
$token['access_key'] = $access_key;
$token['sign'] = $sign;
$token['policy'] = $policy;
$token = implode(':',$token);


// 上传
$ch = curl_init();
curl_setopt_array($ch,array(
    CURLOPT_URL => 'http://up.qiniu.com',
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_HTTPHEADER => array('Content-type: multipart/form-data'),
    CURLOPT_POSTFIELDS => array('token'=>$token,'file' => new CURLFile($localfile),'key' => $filename ),
));
$ret = curl_exec($ch);$info=curl_getinfo($ch);curl_close($ch);

echo $ret;


function safeEncode($str) {
    return str_replace(array('+','/'),array('-','_'),base64_encode($str));
}

补充一下,CURLFile在PHP5.5.x之后才提供的,之前的版本请使用 ‘file’ => ‘@filepath’

去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

发表评论

电子邮件地址不会被公开。