七牛 savekey php,计划用php写一个七牛文件上传小工具

功能

输入框中填入:bucket   Access Key 和 Secret Key

点击提交后,向七牛服务器认证,若认证通过,则在当前页面动态刷新,刚才的输入框消失。

显示一个上传文件按钮,点击可继续添加文件(最多同时上传5个)。文件的key为yyy-mm-dd-hh-name.xxx

然后提交文件后显示进度条,并在下面动态回显上传文件的结果以及文件的url。

七牛API

上传策略

{

"scope":               "",

"deadline":             ,

"endUser":             "",

"returnUrl":           "",

"returnBody":          "",

"callbackBody":        "",

"callbackUrl":         "",

"persistentOps":       "",

"persistentNotifyUrl": "",

"insertOnly":          "",

"detectMime":          "",

"fsizeLimit":          "",

"saveKey":             "",

"mimeLimit":           ""

}

其中scope和deadline为必选。

上传凭证

1.构造上传策略

2.将上传策略序列化成为JSON格式

3.对JSON编码的上传策略进行URL安全的Base64编码,得到待签名字符串:

encodedPutPolicy = urlsafe_base64_encode(putPolicy)

4.使用SecertKey对上一步生成的待签名字符串计算HMAC-SHA1签名

sign = hmac_sha1(signingStr, "")

5.对签名进行URL安全的Base64编码:

encodedSign = urlsafe_base64_encode(sign)

6.将AccessKey、encodedSign和encodedPutPolicy用:连接起来:

uploadToken = AccessKey + ':' + encodedSign + ':' + encodedPutPolicy

表单上传(POST方式)

enctype="multipart/form-data">

">

" type="hidden" value="">

">

token和file为必选,token指的是上传凭证,file为文件本身

反馈

PHP实现

服务端生成上传凭证

require_once("qiniu/rs.php");

$bucket = 'phpsdk';

$accessKey = '';

$secretKey = '';

Qiniu_SetKeys($accessKey, $secretKey);

$putPolicy = new Qiniu_RS_PutPolicy($bucket);

$upToken = $putPolicy->Token(null);

上传本地文件

require_once("qiniu/io.php");

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key1 = "file_name1";

$accessKey = '';

$secretKey = '';

Qiniu_SetKeys($accessKey, $secretKey);

$putPolicy = new Qiniu_RS_PutPolicy($bucket);

$upToken = $putPolicy->Token(null);

$putExtra = new Qiniu_PutExtra();

$putExtra->Crc32 = 1;

list($ret, $err) = Qiniu_PutFile($upToken, $key1, __file__, $putExtra);

echo "====> Qiniu_PutFile result: \n";

if ($err !== null) {

var_dump($err);

} else {

var_dump($ret);

}

参考

[1]:http://developer.qiniu.com/docs/v6/api/reference/security/upload-token.html

[2]:http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值