use Qiniu\Auth;
use Qiniu\Processing\PersistentFop;
// 加入消息队列
public function job()
{
//七牛云压缩文件测试
$accessKey = '七牛云的accessKey';
$secretKey = '七牛云的secretKey';
$auth = new Auth($accessKey, $secretKey);
// 要压缩的文件所在的空间和文件名
$bucket = '空间名称';
// 注意这个key 是你空间里现存的文件名称(只是名称 不需要完整的url地址 文件大小必须大于5kb以上)
$key = '你空间里面任意一个文件名称';
// 用户默认没有私有队列,需要在这里创建然后填写
// https://portal.qiniu.com/dora/media-gate/pipeline 创建队列路径
$pipeline = 'sdktest';
$pfop = new PersistentFop($auth, null);
// 进行 zip 压缩的 文件路径 完整的 url
$url1 = '文件url';
$url2 = '文件url';
// 压缩后的 文件名称
$zipKey = 'kerry.zip';
$fops = 'mkzip/2/url/' . \Qiniu\base64_urlSafeEncode($url1);
$fops .= '/url/' . \Qiniu\base64_urlSafeEncode($url2);
$fops .= '|saveas/' . \Qiniu\base64_urlSafeEncode("$bucket:$zipKey");
// 处理完成后通知到你的业务服务器(需要可以公网访问,并能够相应 200 OK)
$notify_url = null;
// 当转码后的文件名与源文件名相同时,是否覆盖源文件
$force = false;
list($id, $err) = $pfop->execute($bucket, $key, $fops, $pipeline, $notify_url, $force);
echo "\n====> pfop mkzip result: \n";
if ($err != null) {
dump((array)$err);
} else {
echo "PersistentFop Id: $id\n";
}
// 查询转码的进度和状态
list($ret, $err) = $pfop->status($id);
echo "\n====> pfop mkzip status: \n";
if ($err != null) {
echo '---------';
halt($err);
} else {
halt($ret);
}
}
今天测试了七牛云的多文件压缩打包下载,使用的composer qiniu/php-sdk里面的方法其中遇到了一些坑
比如说 $key 是指你当前存储的空间里面任意一个文件的名字,并且该文件必须大于5kb以上 不然一直报错 no such file or directory
当你的key的文件过小,在智能多媒体平台---任务里面 执行队列失败会报错 execute fop cmd failed: source data is empty or fail to get source data 证明你的文件过小
压缩文件的Api文档地址:https://developer.qiniu.com/dora/1667/mkzip