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); }
/** * 上传文件或者字符串 * @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; }
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; }
/** * 从指定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); }
public function signWithData($data) { $data = \Jw\Upload\QiNiu\Support\base64_urlSafeEncode($data); return $this->sign($data) . ':' . $data; }