diff --git a/.travis.yml b/.travis.yml index 415177f6..bbdbf105 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ php: - 5.3 - 5.4 - 5.5 + - 5.6 before_script: - export QINIU_ACCESS_KEY="Vhiv6a22kVN_zhtetbPNeG9sY3JUL1HG597EmBwQ" - export QINIU_SECRET_KEY="b5b5vNg5nnkwkPfW5ayicPE_pj6hqgKMQEaWQ6JD" diff --git a/demo/fetch.php b/demo/fetch.php new file mode 100644 index 00000000..46e903dd --- /dev/null +++ b/demo/fetch.php @@ -0,0 +1,11 @@ +MakeRequest($url, null); + +echo "\n"; +$url = 'http://sslayer.qiniudn.com/dive-into-golang.pptx?odconv/pdf'; +echo $gpy->MakeRequest($url, null); + +echo "\n"; +$url = 'http://sslayer.qiniug.com/2.m3u8'; +echo $gpy->MakeRequest($url, null); diff --git a/demo/pfop.php b/demo/pfop.php new file mode 100644 index 00000000..3afdcfed --- /dev/null +++ b/demo/pfop.php @@ -0,0 +1,22 @@ +Bucket = 'rwxf'; +$pfop->Key = '1.mp4'; + +$savedKey = 'qiniu.jpg'; +$entry = Qiniu_Encode("$pfop->Bucket:$savedKey"); +$pfop->Fops = "vframe/jpg/offset/180/w/1000/h/1000/rotate/90|saveas/$entry"; + +list($ret, $err) = $pfop->MakeRequest($client); +echo "\n\n====> pfop result: \n"; +if ($err !== null) { + var_dump($err); +} else { + var_dump($ret); +} diff --git a/demo/sign_req.php b/demo/sign_req.php new file mode 100644 index 00000000..a57dbef8 --- /dev/null +++ b/demo/sign_req.php @@ -0,0 +1,10 @@ + $url); +$req = new Qiniu_Request($u, ''); +$mac = Qiniu_RequireMac(null); + +echo $mac->SignRequest($req, true); diff --git a/demo/up.php b/demo/up.php new file mode 100644 index 00000000..1b7b2fab --- /dev/null +++ b/demo/up.php @@ -0,0 +1,27 @@ +; + + +$client = new Qiniu_MacHttpClient(null); +$putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key"); +$putPolicy->CallbackUrl = 'https://10fd05306325.a.passageway.io'; +$putPolicy->CallbackBody = 'key=$(key)&hash=$(etag)'; +$upToken = $putPolicy->Token(null); + +$putExtra = new Qiniu_PutExtra(); +$s = time(); +list($ret, $err) = Qiniu_PutFile($upToken, $key, $file, $putExtra); +echo "time elapse:". (time() - $s) . "\n"; +echo "====> Qiniu_PutFile result: \n"; +if ($err !== null) { + var_dump($err); +} else { + var_dump($ret); +} + diff --git a/docs/README.md b/docs/README.md index 1a1c8217..ea2a4a7d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -59,8 +59,7 @@ SDK源码地址: 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -85,8 +84,7 @@ if ($err !== null) { 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -112,8 +110,7 @@ if ($err !== null) { 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -139,8 +136,7 @@ if ($err !== null) { 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -167,8 +163,7 @@ if ($err !== null) { #### 5.1 批量获取文件属性信息 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -196,8 +191,7 @@ if ($err !== null) { #### 5.2 批量复制文件 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -227,8 +221,7 @@ if ($err !== null) { #### 5.3 批量删除文件 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -257,8 +250,7 @@ if ($err !== null) { #### 5.4 批量移动文件 示例代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -318,8 +310,7 @@ if ($err !== null) { 服务端生成 [uptoken](http://docs.qiniu.com/api/put.html#uploadToken) 代码如下: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -336,8 +327,7 @@ $upToken = $putPolicy->Token(null); 上传字符串 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/io.php'); @@ -362,8 +352,7 @@ if ($err !== null) { 上传本地文件 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/io.php'); @@ -393,24 +382,26 @@ if ($err !== null) { [uptoken](http://docs.qiniu.com/api/put.html#uploadToken) 实际上是用 AccessKey/SecretKey 进行数字签名的上传策略(`Qiniu_RS_PutPolicy`),它控制则整个上传流程的行为。让我们快速过一遍你都能够决策啥: - class Qiniu_RS_PutPolicy - { - public $Scope; // 必选项。可以是 bucketName 或者 bucketName:key - public $CallbackUrl; // 可选 - public $CallbackBody; // 可选 - public $ReturnUrl; // 可选, 更贴切的名字是 redirectUrl。 - public $ReturnBody; // 可选 - public $AsyncOps; // 可选 - public $EndUser; // 可选 - public $Expires; // 可选。默认是 3600 秒 - public $PersistentOps; // 可选。 - public $PersistentNotifyUrl; // 如果设置了PersistentOps,必须同时设置此项。 - public $InsertOnly; // 可选。如果设置为非0值,则无论scope设置为何种形式,都只能以`新增`方式上传,不能覆盖。 - public $DetectMime; // 可选。如果设为非0值,则忽略上传端传递的文件MimeType信息,使用七牛服务器侦测内容后的判断结果。 - public $FsizeLimit; // 可选。int类型,超过限制大小的上传内容会被判为上传失败,返回413状态码。 - public $SaveKey; // 可选。自定义资源名格式。 - public $MimeLimit; // 可选。限定上传的文件类型。 - } +```php +class Qiniu_RS_PutPolicy +{ + public $Scope; // 必选项。可以是 bucketName 或者 bucketName:key + public $CallbackUrl; // 可选 + public $CallbackBody; // 可选 + public $ReturnUrl; // 可选, 更贴切的名字是 redirectUrl。 + public $ReturnBody; // 可选 + public $AsyncOps; // 可选 + public $EndUser; // 可选 + public $Expires; // 可选。默认是 3600 秒 + public $PersistentOps; // 可选。 + public $PersistentNotifyUrl; // 如果设置了PersistentOps,必须同时设置此项。 + public $InsertOnly; // 可选。如果设置为非0值,则无论scope设置为何种形式,都只能以`新增`方式上传,不能覆盖。 + public $DetectMime; // 可选。如果设为非0值,则忽略上传端传递的文件MimeType信息,使用七牛服务器侦测内容后的判断结果。 + public $FsizeLimit; // 可选。int类型,超过限制大小的上传内容会被判为上传失败,返回413状态码。 + public $SaveKey; // 可选。自定义资源名格式。 + public $MimeLimit; // 可选。限定上传的文件类型。 +} +``` * `scope` 限定客户端的权限。如果 `scope` 是 bucket,则客户端只能新增文件到指定的 bucket,不能修改文件。如果 `scope` 为 bucket:key,则客户端可以修改指定的文件。**注意: key必须采用utf8编码,如使用非utf8编码访问七牛云存储将反馈错误** * `callbackUrl` 设定业务服务器的回调地址,这样业务服务器才能感知到上传行为的发生。 @@ -427,8 +418,7 @@ if ($err !== null) { ### 1.3 断点续上传 示例代码如下 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/resumable_io.php'); @@ -469,10 +459,12 @@ if ($err !== null) { 示例代码: - $key1 = 'file_name_1'; - $domain = 'phpsdk.qiniudn.com'; - //$baseUrl 就是您要访问资源的地址 - $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key1); +```php +$key1 = 'file_name_1'; +$domain = 'phpsdk.qiniudn.com'; +//$baseUrl 就是您要访问资源的地址 +$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key1); +``` 其中\是bucket所对应的域名。七牛云存储为每一个bucket提供一个默认域名。默认域名可以到[七牛云存储开发者平台](https://portal.qiniu.com/)中,空间设置的域名设置一节查询。用户也可以将自有的域名绑定到bucket上,通过自有域名访问七牛云存储。 @@ -487,8 +479,7 @@ if ($err !== null) { 注意,尖括号不是必需,代表替换项。 私有下载链接可以使用 SDK 提供的如下方法生成: -``` -{php} +```php require_once('qiniu/rs.php'); @@ -517,8 +508,7 @@ echo $privateUrl . "\n"; #### 1.1 查看图像属性 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/fop.php'); @@ -549,8 +539,7 @@ echo $imgInfoPrivateUrl . "\n"; #### 1.2 查看图片EXIF信息 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/fop.php'); @@ -578,8 +567,7 @@ echo $imgExifPrivateUrl . "\n"; #### 1.3 生成图片预览 -``` -{php} +```php require_once('qiniu/rs.php'); require_once('qiniu/fop.php'); diff --git a/qiniu/conf.php b/qiniu/conf.php index fbe399ec..f24bfc6b 100644 --- a/qiniu/conf.php +++ b/qiniu/conf.php @@ -4,7 +4,7 @@ global $QINIU_UP_HOST; global $QINIU_RS_HOST; global $QINIU_RSF_HOST; - + global $QINIU_ACCESS_KEY; global $QINIU_SECRET_KEY; @@ -13,7 +13,8 @@ $QINIU_UP_HOST = 'http://upload.qiniu.com'; $QINIU_RS_HOST = 'http://rs.qbox.me'; $QINIU_RSF_HOST = 'http://rsf.qbox.me'; +$QINIU_API_HOST = 'http://api.qiniu.com'; +$QINIU_IOVIP_HOST = 'http://iovip.qbox.me'; $QINIU_ACCESS_KEY = ''; $QINIU_SECRET_KEY = ''; - diff --git a/qiniu/io.php b/qiniu/io.php index d77a03bf..d150938a 100644 --- a/qiniu/io.php +++ b/qiniu/io.php @@ -70,10 +70,7 @@ function Qiniu_PutFile($upToken, $key, $localFile, $putExtra) // => ($putRet, $e } $fields = array('token' => $upToken, 'file' => createFile($localFile, $putExtra->MimeType)); - if ($key === null) { - $fname = '?'; - } else { - $fname = $key; + if ($key !== null) { $fields['key'] = $key; } if ($putExtra->CheckCrc) { diff --git a/qiniu/pfop.php b/qiniu/pfop.php new file mode 100644 index 00000000..cd1a4db6 --- /dev/null +++ b/qiniu/pfop.php @@ -0,0 +1,48 @@ + $this->Bucket, + 'key' => $this->Key, + 'fops' => $this->Fops, + 'notifyURL' => $this->NotifyURL, + 'force' => $this->Force, + 'pipeline' => $this->Pipeline + ); + + $url = $QINIU_API_HOST . '/pfop/'; + + return Qiniu_Client_CallWithForm($self, $url, $ReqParams); + } + +} + +function Qiniu_PfopStatus($client, $id) +{ + global $QINIU_API_HOST; + + $url = $QINIU_API_HOST . '/status/get/prefop?'; + $params = array('id' => $id); + + return Qiniu_Client_CallWithForm($client, $url, $params); +} + + + diff --git a/qiniu/rs.php b/qiniu/rs.php index 07dd0317..443ca377 100644 --- a/qiniu/rs.php +++ b/qiniu/rs.php @@ -91,8 +91,8 @@ public function Token($mac) // => $token if (!empty($this->EndUser)) { $policy['endUser'] = $this->EndUser; } - if (!empty($this->InsertOnly)) { - $policy['exclusive'] = $this->InsertOnly; + if (isset($this->InsertOnly)) { + $policy['insertOnly'] = $this->InsertOnly; } if (!empty($this->DetectMime)) { $policy['detectMime'] = $this->DetectMime; @@ -258,5 +258,16 @@ function Qiniu_RS_BatchCopy($self, $entryPairs) return Qiniu_RS_Batch($self, $params); } +// ---------------------------------------------------------- +// fetch +function Qiniu_RS_Fetch($self, $url, $bucket, $key) +{ + + global $QINIU_IOVIP_HOST; + $path = '/fetch/' . Qiniu_Encode($url) . '/to/' . Qiniu_Encode("$bucket:$key"); + return Qiniu_Client_CallNoRet($self, $QINIU_IOVIP_HOST . $path); +} + + // ----------------------------------------------------------