diff --git a/CHANGELOG.md b/CHANGELOG.md index 36ff898f..f1db2c17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## CHANGE LOG +### v6.1.8 + +2014-3-31 issues [#66](https://github.com/qiniu/php-sdk/pull/66) + +- 上传策略[支持mimeLimit字段](http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html#put-policy-mime-limit),用于限定上传文件的mimeType。 + ### v6.1.7 2014-2-19 issues [#64](https://github.com/qiniu/php-sdk/pull/64) diff --git a/docs/README.md b/docs/README.md index 2e1cf38a..ae560b9d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -253,6 +253,13 @@ SDK源码地址: public $Expires; // 可选。默认是 3600 秒 public $PersistentOps; // 可选。 public $PersistentNotifyUrl; // 如果设置了PersistentOps,必须同时设置此项。 + public $InsertOnly; // 可选。如果设置为非0值,则无论scope设置为何种形式,都只能以`新增`方式上传,不能覆盖。 + public $DetectMime; // 可选。如果设为非0值,则忽略上传端传递的文件MimeType信息,使用七牛服务器侦测内容后的判断结果。 + public $FsizeLimit; // 可选。int类型,超过限制大小的上传内容会被判为上传失败,返回413状态码。 + public $SaveKey; // 可选。自定义资源名格式。 + public $Transform; // 可选。指定资源经过怎样的处理后再保存。 + public $FopTimeout; // 可选。int类型,指定transform的超时时间,如果文件处理超过此值,则认为上传失败。 + public $MimeLimit; // 可选。限定上传的文件类型。 } * `scope` 限定客户端的权限。如果 `scope` 是 bucket,则客户端只能新增文件到指定的 bucket,不能修改文件。如果 `scope` 为 bucket:key,则客户端可以修改指定的文件。**注意: key必须采用utf8编码,如使用非utf8编码访问七牛云存储将反馈错误** diff --git a/qiniu/rs.php b/qiniu/rs.php index 9d3726ec..1166b5d8 100644 --- a/qiniu/rs.php +++ b/qiniu/rs.php @@ -57,6 +57,7 @@ class Qiniu_RS_PutPolicy public $PersistentNotifyUrl; public $Transform; public $FopTimeout; + public $MimeLimit; public function __construct($scope) { @@ -114,6 +115,10 @@ public function Token($mac) // => $token if (!empty($this->FopTimeout)) { $policy['fopTimeout'] = $this->FopTimeout; } + if (!empty($this->MimeLimit)) { + $policy['mimeLimit'] = $this->MimeLimit; + } + $b = json_encode($policy); return Qiniu_SignWithData($mac, $b); diff --git a/tests/IoTest.php b/tests/IoTest.php index f8510c60..305bbf2c 100644 --- a/tests/IoTest.php +++ b/tests/IoTest.php @@ -169,5 +169,19 @@ public function testPut_transform() { $this->assertEquals($ret["mimeType"], "image/png"); var_dump($ret); } + public function testPut_mimeLimit() { + $key = 'testPut_mimeLimit' . getTid(); + $scope = $this->bucket . ':' . $key; + $err = Qiniu_RS_Delete($this->client, $this->bucket, $key); + + $putPolicy = new Qiniu_RS_PutPolicy($scope); + $putPolicy->MimeLimit = "image/*"; + $upToken = $putPolicy->Token(null); + + list($ret, $err) = Qiniu_PutFile($upToken, $key, __file__, null); + $this->assertNull($ret); + $this->assertEquals($err->Err, "limited mimeType: this file type is forbidden to upload"); + var_dump($err); + } }