php实现阿里云OSS下载目录文件并打包

阿里云OSS很方便,官方提供乐api也很强大,但是无法满足特别的需求,比方说批量下载阿里云OSS的多个文件及目录,批量打包目录等,这些功能需要使用一些基础的api进行开发
在阿里云OSS中目录就是Object,下载目录必须要查看目录有哪些文件
利用官方自带的listObjects这个api可以实现查看目录文件及子目录的功能
ossClient->listObjects($bucket, array( 'max-keys' => "1000",//设置分页的页容量 'prefix' => "img/2019/8/12/",//指定下一级文件 'delimiter' => "/",//跳出递归循环,只去指定目录下的文件。使用它时 prefix要以/结尾 'marker' => ""//获取下一页的起始点,它的下一项 ));通过上面这个api可以获取分页大小下的目录文件路径
获取路径后就可以调用阿里云OSS的下载对象接口getObject了
try {
$_content = $this->ossClient->getObject($bucket, $object);
$_localpath = dirname($localfilepath);//本地路径
if (! is_dir($_localpath)) {
mkdir($_localpath, 0777, true);
}
return file_put_contents($localfilepath, $_content);
} catch (\Plugin\OSS\Core\OssException $e) {
print $e->getMessage();
return false;
}
下载完后既可以打包了
/*压缩多级目录
$openFile:目录句柄
$zipObj:Zip对象
$sourceAbso:源文件夹路径
*/
function createZip($openFile,$zipObj,$sourceAbso,$newRelat = '')
{
while(($file = readdir($openFile)) != false)
{
if($file=="." || $file=="..")
continue;
/*源目录...点击查看剩余70%
网友评论0