欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

七牛如何实现对已有视频文件的持久化

 

主要参考了以下两个文档
http://docs.qiniu.com/api/v6/persistent-ops.html#persistentOps-pfop
http://docs.qiniu.com/api/v6/rs.html#digest-auth

http://docs.qiniu.com/api/v6/rs.html#digest-auth下面提供的PHP代码,好像倒数第五、四、三行结尾没有分行,跑不过。

补齐分号后,跑过,主要参数如下
$url = 'http://api.qiniu.com/pfop';
$query = 'bucket=mybucketname&key=news1015.wmv&fops=fop1&notifyURL=http://www.mywebsite.com/';

得到access_token

然后在命令行下用curl提交POST数据

curl -d "bucket=mybucketname&key=news1015.wmv&fops=fop1&notifyURL=http://www.mywebsite.com/" --header "Content-Type: application/x-www-form-urlencoded" --header "Authorization: QBox ****************************************:sqdnDVuij94vDgoRAUqaZzVEAUE=" "http://api.qiniu.com/pfop/"

提交地址如果写成http://api.qiniu.com/pfop,则不返回任何结果

更改提交地址写为http://api.qiniu.com/pfop/,则返回{"error":"bad token"}

试了两个晚上了,实在是搞不懂,请问该如何实现

 

2个回答

 

0

已采纳

签名的data是 '<path>\n<body>',在这里就是

'/pfop/\nbucket=mybucketname&key=news1015.wmv&fops=fop1&notifyURL=http://www.mywebsite.com/'

access token的生成代码可以参考:

<?php

require_once('qiniu/rs.php');
require_once('qiniu/http.php');
require_once('qiniu/auth_digest.php');
require_once('qiniu/utils.php');

$accessKey = '<access key>';
$secretKey = '<secret key>';
Qiniu_SetKeys($accessKey, $secretKey);
$mac = new Qiniu_Mac($accessKey, $secretKey);

$query = "bucket=mybucketname&key=news1015.wmv&fops=fop1&notifyURL=http://www.mywebsite.com/";
$sign_data = "/pfop/\n" . $query;
$accessToken = $mac->Sign($sign_data);

echo $accessToken . "\n";

?>
0

最后一步将提交地址加了一个 / ,那么对应的 Token 也要重新生成的,因为 Path 不一样了,从原来的 /pfop 变成了 /pfop/ 。 我们文档显示的 URL 有问题,应该是:http://api.qiniu.com/pfop/ 。 重试后,如果有问题,请继续反馈。

来自  https://segmentfault.com/q/1010000000331820
普通分类: