zoukankan      html  css  js  c++  java
  • 七牛php-sdk使用-在线打包

    如果需要将空间中的多个文件,打包成一个压缩文件,该怎么做,不需要自己本地打包好再上传,七牛已经为我们提供了这项服务。

    命令:mkzip/2/url/xx/alias/xxx;

    不仅可以将文件打包,还可以将打包内容按文件夹进行划分,如test.zip 解压后为文件夹T1和T2,文件夹中再是具体的文件,改如何做,主要就在alias命名上了,alias只要命名为文件夹/文件名的形式就可以了。

    所以如果我们有多个类型的多个文件,可以封装一个方法,传递给他一个原文件名和别名的数组就可以了。然后方法就是遍历数组对pfop命令进行多个url与alias的拼接。

    /**
     * 七牛资源压缩
     * @param $packageName 打包后的资源名
     * @param  Array $sourceArray 资源数组 
     * [
     *     [
     *         'key' => 'http://source.domain.cn/test1.ppt',
     *         'alias' => 'alias1.ppt',//别名 可空,空则为源文件名,如要创建文件夹则命名为 文件夹名/文件名
     *     ],
     *     [
     *         'key' => 'http://source.domain.cn/test2.ppt',
     *         'alias' => 'alias2.ppt'
     *     ],
     * ]
     */
    public function compress(Array $sourceArray,$packageName,$callbackUrl='')
     {
         $bucket = $this->bucket_for_image;
         $fops = 'mkzip/2';
         foreach ($sourceArray as $k => $source) {
             $Base64EncodedURL = $this->base64_urlSafeEncode($source['key']);
             $Base64AliasEncodedURL = $this->base64_urlSafeEncode($source['alias']);
             $fops .= '/url/'.$Base64EncodedURL;
             if(!empty($source['alias'])){
                 $fops .= '/alias/'.$Base64AliasEncodedURL;
             }
         }
         $fops .= '|saveas/'.$this->saveasEnocde($packageName); 
         $res = $this->persistentOps('test.txt',$bucket,$fops,$callbackUrl,false);
         echo $res;
     }
    

    persistentOps和base64_urlSafeEncode参见七牛php-sdk使用-文档处理,这里就不在帖代码了。

    需要注意的一点是,调用persistentOps的时候,第一个参数必须为bucket内一个有效存在的资源的名称,没有实际作用,但必须指定

  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/skyfynn/p/6566416.html
Copyright © 2011-2022 走看看