示例#1
0
文件: Etag.php 项目: itliuchang/test
 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 = Functions::base64_urlSafeEncode(self::packArray('C*', $sha1Buf));
     return array($etag, null);
 }
示例#2
0
 public static function putFile($upToken, $key, $filePath, $config, $params, $mime, $checkCrc)
 {
     $fields = array('token' => $upToken, 'file' => self::createFile($filePath, $mime));
     if ($key === null) {
         $fname = 'filename';
     } else {
         $fname = $key;
         $fields['key'] = $key;
     }
     if ($checkCrc) {
         $fields['crc32'] = Functions::crc32_file($filePath);
     }
     if ($params) {
         foreach ($params as $k => $v) {
             $fields[$k] = $v;
         }
     }
     $headers = array('Content-Type' => 'multipart/form-data');
     $response = client::post($config->getUpHost(), $fields, $headers);
     if (!$response->ok()) {
         return array(null, new Error($config->getUpHost(), $response));
     }
     return array($response->json(), null);
 }
示例#3
0
 private static function twoKeyBatch($operation, $source_bucket, $key_pairs, $target_bucket)
 {
     if ($target_bucket === null) {
         $target_bucket = $source_bucket;
     }
     $data = array();
     foreach ($key_pairs as $from_key => $to_key) {
         $from = Functions::entry($source_bucket, $from_key);
         $to = Functions::entry($target_bucket, $to_key);
         array_push($data, $operation . '/' . $from . '/' . $to);
     }
     return $data;
 }
示例#4
0
文件: Auth.php 项目: itliuchang/test
 public function signWithData($data)
 {
     $data = Functions::base64_urlSafeEncode($data);
     return $this->sign($data) . ':' . $data;
 }
示例#5
0
 private static function bodyJson($body, array $config = array())
 {
     return Functions::json_decode((string) $body, array_key_exists('object', $config) ? !$config['object'] : true, 512, array_key_exists('big_int_strings', $config) ? JSON_BIGINT_AS_STRING : 0);
 }
示例#6
0
 private function fileUrl()
 {
     $url = $this->host . '/mkfile/' . $this->size;
     $url .= '/mimeType/' . Functions::base64_urlSafeEncode($this->mime);
     if ($this->key != null) {
         $url .= '/key/' . Functions::base64_urlSafeEncode($this->key);
     }
     if (!empty($this->params)) {
         foreach ($this->params as $key => $value) {
             $val = Functions::base64_urlSafeEncode($value);
             $url .= "/{$key}/{$val}";
         }
     }
     return $url;
 }