예제 #1
0
파일: Etag.php 프로젝트: a07061625/upload
 public static function sum($filename)
 {
     $fhandler = fopen($filename, 'r');
     $err = error_get_last();
     if ($err !== null) {
         return array(null, $err);
     }
     $fstat = fstat($fhandler);
     $fsize = $fstat['size'];
     if ($fsize == 0) {
         fclose($fhandler);
         return array('Fto5o-5ea0sNMlW_75VgGJCv2AcJ', null);
     }
     $blockCnt = self::blockCount($fsize);
     $sha1Buf = array();
     if ($blockCnt <= 1) {
         array_push($sha1Buf, 0x16);
         $fdata = fread($fhandler, Config::BLOCK_SIZE);
         if ($err !== null) {
             fclose($fhandler);
             return array(null, $err);
         }
         list($sha1Code, ) = calSha1($fdata);
         $sha1Buf = array_merge($sha1Buf, $sha1Code);
     } else {
         array_push($sha1Buf, 0x96);
         $sha1BlockBuf = array();
         for ($i = 0; $i < $blockCnt; $i++) {
             $fdata = fread($fhandler, Config::BLOCK_SIZE);
             list($sha1Code, $err) = self::calcSha1($fdata);
             if ($err !== null) {
                 fclose($fhandler);
                 return array(null, $err);
             }
             $sha1BlockBuf = array_merge($sha1BlockBuf, $sha1Code);
         }
         $tmpData = self::packArray('C*', $sha1BlockBuf);
         list($sha1Final, ) = self::calcSha1($tmpData);
         $sha1Buf = array_merge($sha1Buf, $sha1Final);
     }
     $etag = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode(self::packArray('C*', $sha1Buf));
     return array($etag, null);
 }
예제 #2
0
 /**
  * 上传文件或者字符串
  * @param array $options 参数数组
  * 必须填写的参数:
  *   bucket_name:资源空间名称
  *   type:操作类型,具体取值如下:
  *     1:上传字符串
  *     2:上传文件
  *     3:上传文件,并将文件名和文件大小回调给业务服务器
  *     4:上传视频,上传完成后进行m3u8的转码,并给视频打水印
  * @return array
  */
 public function uploadFile($options)
 {
     $resArr = ['code' => 0];
     $uploadManager = new UploadManager();
     if ($options['type'] == 1) {
         $token = $this->auth->uploadToken($options['bucket_name']);
         list($res, $err) = $uploadManager->put($token, null, $options['content']);
         if ($err !== null) {
             $resArr['code'] = 2;
             $resArr['message'] = $err->message();
         } else {
             $resArr['data'] = \Jw\Upload\QiNiu\Support\json_decode($res, true);
         }
     } else {
         if ($options['type'] == 2) {
             $token = $this->auth->uploadToken($options['bucket_name']);
             list($res, $err) = $uploadManager->putFile($token, $options['file_name'], $options['save_name']);
             if ($err !== null) {
                 $resArr['code'] = 3;
                 $resArr['message'] = $err->message();
             } else {
                 $resArr['data'] = \Jw\Upload\QiNiu\Support\json_decode($res, true);
             }
         } else {
             if ($options['type'] == 3) {
                 $policy = ['callbackUrl' => $options['callback_url'], 'callbackBody' => 'filename=' . $options['file_name'] . '&filesize=' . $options['file_size']];
                 $token = $this->auth->uploadToken($options['bucket_name'], null, 3600, $policy);
                 list($res, $err) = $uploadManager->putFile($token, null, $options['save_name']);
                 if ($err !== null) {
                     $resArr['code'] = 4;
                     $resArr['message'] = $err->message();
                 } else {
                     $resArr['data'] = \Jw\Upload\QiNiu\Support\json_decode($res, true);
                 }
             } else {
                 if ($options['type'] == 4) {
                     $wmImg = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($options['water_url']);
                     $pfop = "avthumb/m3u8/wmImage/" . $wmImg;
                     $policy = array('persistentOps' => $pfop, 'persistentNotifyUrl' => $options['notify_url'], 'persistentPipeline' => $options['pipeline']);
                     $token = $this->auth->uploadToken($options['bucket_name'], null, 3600, $policy);
                     list($res, $err) = $uploadManager->putFile($token, null, $options['save_name']);
                     if ($err !== null) {
                         $resArr['code'] = 5;
                         $resArr['message'] = $err->message();
                     } else {
                         $resArr['data'] = \Jw\Upload\QiNiu\Support\json_decode($res, true);
                     }
                 } else {
                     $resArr['code'] = 1;
                     $resArr['message'] = '操作类型不正确';
                 }
             }
         }
     }
     return $resArr;
 }
예제 #3
0
 private function fileUrl()
 {
     $url = $this->host . '/mkfile/' . $this->size;
     $url .= '/mimeType/' . \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($this->mime);
     if ($this->key != null) {
         $url .= '/key/' . \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($this->key);
     }
     if (!empty($this->params)) {
         foreach ($this->params as $key => $value) {
             $val = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($value);
             $url .= "/{$key}/{$val}";
         }
     }
     return $url;
 }
예제 #4
0
 /**
  * 从指定URL抓取资源,并将该资源存储到指定空间中
  * @param string $url 指定的URL
  * @param string $bucket 目标资源空间
  * @param string $key 目标资源文件名
  *
  * @return array 包含已拉取的文件信息。
  *   成功时:
  *     [
  *       [
  *         "hash" => "<Hash string>",
  *         "key" => "<Key string>"
  *       ],
  *       null
  *     ]
  *
  *   失败时:
  *     [
  *       null,
  *       Jw\Upload\QiNiu\Support/Http/Error
  *     ]
  * @link  http://developer.qiniu.com/docs/v6/api/reference/rs/fetch.html
  */
 public function fetch($url, $bucket, $key)
 {
     $resource = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($url);
     $to = \Jw\Upload\QiNiu\Support\entry($bucket, $key);
     $path = '/fetch/' . $resource . '/to/' . $to;
     return $this->ioPost($path);
 }
예제 #5
0
파일: Auth.php 프로젝트: a07061625/upload
 public function signWithData($data)
 {
     $data = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($data);
     return $this->sign($data) . ':' . $data;
 }