|
| 1 | +--- |
| 2 | +title: PHP SDK | 七牛云存储 |
| 3 | +--- |
| 4 | + |
| 5 | +# PHP SDK 使用指南 |
| 6 | + |
| 7 | +此 SDK 适用于 PHP 5.1.0 及其以上版本。基于 [七牛云存储官方API](http://docs.qiniu.com) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。 |
| 8 | + |
| 9 | +SDK源码地址:<https://github.com/qiniu/php-sdk/tags> |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +- [获取Access Key 和 Secret Key](#acc-appkey) |
| 14 | +- [资源管理接口](#rs-api) |
| 15 | + - [1 查看单个文件属性信息](#rs-stat) |
| 16 | + - [2 复制单个文件](#rs-copy) |
| 17 | + - [3 移动单个文件](#rs-move) |
| 18 | + - [4 删除单个文件](#rs-delete) |
| 19 | +- [上传下载接口](#get-and-put-api) |
| 20 | + - [1 上传授权](#token) |
| 21 | + - [1.1 生成uptoken](#make-uptoken) |
| 22 | + - [2 文件上传](#upload) |
| 23 | + - [2.1 普通上传](#io-upload) |
| 24 | + - [3 文件下载](#io-download) |
| 25 | + - [1 公有资源下载](#public-download) |
| 26 | + - [2 私有资源下载](#private-download) |
| 27 | +- [数据处理接口](#fop-api) |
| 28 | + - [1 图像](#fop-image) |
| 29 | + - [1.1 查看图像属性](#fop-image-info) |
| 30 | + - [1.2 查看图片EXIF信息](#fop-exif) |
| 31 | + - [1.3 生成图片预览](#fop-image-view) |
| 32 | +- [贡献代码](#contribution) |
| 33 | +- [许可证](#license) |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | +## 应用接入 |
| 39 | + |
| 40 | +<a name="acc-appkey"></a> |
| 41 | + |
| 42 | +### 1. 获取Access Key 和 Secret Key |
| 43 | + |
| 44 | +要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得: |
| 45 | + |
| 46 | +1. [开通七牛开发者帐号](https://portal.qiniu.com/signup) |
| 47 | +2. [登录七牛开发者自助平台,查看 Access Key 和 Secret Key](https://portal.qiniu.com/setting/key) 。 |
| 48 | + |
| 49 | +### 2. 签名认证 |
| 50 | + |
| 51 | +首先,到 [https://github.com/qiniu/php-sdk/tags](https://github.com/qiniu/php-sdk/tags) 下载SDK源码。 |
| 52 | + |
| 53 | +然后,将SDK压缩包解压放到您的项目中,确保php-sdk/qiniu/目录中存在一个名为 conf.php 的文件,编辑该文件配置您应用程序的密钥信息(Access Key 和 Secret Key)。 |
| 54 | + |
| 55 | +$ vim path/to/your_project/lib/php-sdk/qiniu/conf.php |
| 56 | + |
| 57 | +找到如下两行代码并做相应修改: |
| 58 | + |
| 59 | + $QINIU_ACCESS_KEY = '<Please apply your access key>'; |
| 60 | + $QINIU_SECRET_KEY = '<Dont send your secret key to anyone>'; |
| 61 | + |
| 62 | +在完成 Access Key 和 Secret Key 配置后,您就可以正常使用该 SDK 提供的功能了,这些功能接下来会一一介绍。 |
| 63 | + |
| 64 | +<a name=rs-api></a> |
| 65 | +## 资源管理接口 |
| 66 | + |
| 67 | +<a name="rs-stat"></a> |
| 68 | +### 1.查看单个文件属性信息 |
| 69 | + |
| 70 | +示例代码如下: |
| 71 | + |
| 72 | + require_once("rs.php"); |
| 73 | + |
| 74 | + $bucket = "phpsdk"; |
| 75 | + $key = "file_name"; |
| 76 | + $client = new Qiniu_MacHttpClient(null); |
| 77 | + |
| 78 | + list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key); |
| 79 | + echo "Qiniu_RS_Stat result: \n"; |
| 80 | + if ($err !== null) { |
| 81 | + var_dump($err); |
| 82 | + } else { |
| 83 | + var_dump($ret); |
| 84 | + } |
| 85 | + |
| 86 | +<a name="rs-copy"></a> |
| 87 | +### 2. 复制单个文件 |
| 88 | + |
| 89 | +示例代码如下: |
| 90 | + |
| 91 | + require_once("rs.php"); |
| 92 | + |
| 93 | + $bucket = "phpsdk"; |
| 94 | + $key = "file_name"; |
| 95 | + $key1 = "file_name1"; |
| 96 | + $client = new Qiniu_MacHttpClient(null); |
| 97 | + |
| 98 | + $err = Qiniu_RS_Copy($client, $bucket, $key, $bucket, $key1); |
| 99 | + echo "====> Qiniu_RS_Copy result: \n"; |
| 100 | + if ($err !== null) { |
| 101 | + var_dump($err); |
| 102 | + } else { |
| 103 | + echo "Success!"; |
| 104 | + } |
| 105 | + |
| 106 | +<a name="rs-delete"></a> |
| 107 | +### 3. 删除单个文件 |
| 108 | + |
| 109 | +示例代码如下: |
| 110 | + |
| 111 | + require_once("rs.php"); |
| 112 | + |
| 113 | + $bucket = "phpsdk"; |
| 114 | + $key = "file_name"; |
| 115 | + $key1 = "file_name1"; |
| 116 | + $client = new Qiniu_MacHttpClient(null); |
| 117 | + |
| 118 | + $err = Qiniu_RS_Delete($client, $bucket, $key1); |
| 119 | + echo "====> Qiniu_RS_Delete result: \n"; |
| 120 | + if ($err !== null) { |
| 121 | + var_dump($err); |
| 122 | + } else { |
| 123 | + echo "Success!"; |
| 124 | + } |
| 125 | + |
| 126 | +<a name="rs-move"></a> |
| 127 | +### 4. 移动单个文件 |
| 128 | + |
| 129 | +示例代码如下: |
| 130 | + |
| 131 | + require_once("rs.php"); |
| 132 | + |
| 133 | + $bucket = "phpsdk"; |
| 134 | + $key = "file_name"; |
| 135 | + $key1 = "file_name1"; |
| 136 | + $client = new Qiniu_MacHttpClient(null); |
| 137 | + |
| 138 | + $err = Qiniu_RS_Move($client, $bucket, $key, $bucket, $key1); |
| 139 | + echo "====> Qiniu_RS_Move result: \n"; |
| 140 | + if ($err !== null) { |
| 141 | + var_dump($err); |
| 142 | + } else { |
| 143 | + echo "Success!"; |
| 144 | + } |
| 145 | + |
| 146 | + |
| 147 | +<a name="get-and-put-api"></a> |
| 148 | +## 上传下载接口 |
| 149 | + |
| 150 | +<a name="token"></a> |
| 151 | +###1.上传下载授权 |
| 152 | + |
| 153 | +<a name="make-uptoken"></a> |
| 154 | +####上传授权uptoken |
| 155 | +uptoken是一个字符串,作为http协议Header的一部分(Authorization字段)发送到我们七牛的服务端,表示这个http请求是经过认证的。 |
| 156 | + |
| 157 | +示例代码如下: |
| 158 | + |
| 159 | + $putPolicy = new Qiniu_RS_PutPolicy($bucket); |
| 160 | + $upToken = $putPolicy->Token(null); |
| 161 | + |
| 162 | +<a name=upload></a> |
| 163 | +###2. 文件上传 |
| 164 | +**注意**:如果您只是想要上传已存在您电脑本地或者是服务器上的文件到七牛云存储,可以直接使用七牛提供的 [qrsync](/v3/tools/qrsync/) 上传工具。 |
| 165 | +文件上传有两种方式,一种是以普通方式直传文件,简称普通上传,另一种方式是断点续上传,断点续上传在网络条件很一般的情况下也能有出色的上传速度,而且对大文件的传输非常友好。 |
| 166 | + |
| 167 | +<a name=io-upload></a> |
| 168 | +#### 2.1 普通上传 |
| 169 | + |
| 170 | +上传字符串 |
| 171 | + |
| 172 | + require_once("io.php"); |
| 173 | + require_once("rs.php"); |
| 174 | + |
| 175 | + $bucket = "phpsdk"; |
| 176 | + $key = "file_name"; |
| 177 | + |
| 178 | + $putPolicy = new Qiniu_RS_PutPolicy($bucket); |
| 179 | + $upToken = $putPolicy->Token(null); |
| 180 | + $putExtra = new Qiniu_PutExtra(); |
| 181 | + list($ret, $err) = Qiniu_Put($upToken, $key, "Qiniu Storage!", null); |
| 182 | + echo "====> Qiniu_Put result: \n"; |
| 183 | + if ($err !== null) { |
| 184 | + var_dump($err); |
| 185 | + } else { |
| 186 | + var_dump($ret); |
| 187 | + } |
| 188 | + |
| 189 | +上传本地文件 |
| 190 | + |
| 191 | + require_once("io.php"); |
| 192 | + require_once("rs.php"); |
| 193 | + |
| 194 | + $bucket = "phpsdk"; |
| 195 | + $key = "file_name"; |
| 196 | + |
| 197 | + $putPolicy = new Qiniu_RS_PutPolicy($bucket); |
| 198 | + $upToken = $putPolicy->Token(null); |
| 199 | + $putExtra = new Qiniu_PutExtra(); |
| 200 | + $putExtra->Crc32 = 1; |
| 201 | + list($ret, $err) = Qiniu_PutFile($upToken, $key, __file__, $putExtra); |
| 202 | + echo "====> Qiniu_PutFile result: \n"; |
| 203 | + if ($err !== null) { |
| 204 | + var_dump($err); |
| 205 | + } else { |
| 206 | + var_dump($ret); |
| 207 | + } |
| 208 | + |
| 209 | +<a name=io-download></a> |
| 210 | +### 3. 文件下载 |
| 211 | +七牛云存储上的资源下载分为 公有资源下载 和 私有资源下载 。 |
| 212 | + |
| 213 | +私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。 |
| 214 | + |
| 215 | +新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。 |
| 216 | + |
| 217 | +<a name=public-download></a> |
| 218 | +#### 3.1 公有资源下载 |
| 219 | +如果在给bucket绑定了域名的话,可以通过以下地址访问。 |
| 220 | + |
| 221 | + [GET] http://<domain>/<key> |
| 222 | + |
| 223 | +其中<domain>可以到[七牛云存储开发者自助网站](https://portal.qiniu.com/)绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(`<bucket>.qiniudn.com`)。注意,尖括号不是必需,代表替换项。 |
| 224 | + |
| 225 | +<a name=private-download></a> |
| 226 | +#### 3.2 私有资源下载 |
| 227 | +私有资源必须通过临时下载授权凭证(downloadToken)下载,如下: |
| 228 | + |
| 229 | + [GET] http://<domain>/<key>?e=<deadline>&token=<downloadToken> |
| 230 | + |
| 231 | +注意,尖括号不是必需,代表替换项。 |
| 232 | +私有下载链接可以使用 SDK 提供的如下方法生成: |
| 233 | + |
| 234 | + require_once("rs.php"); |
| 235 | + require_once("fop.php"); |
| 236 | + |
| 237 | + $key = 'file_name'; |
| 238 | + $domain = 'phpsdk.qiniudn.com'; |
| 239 | + |
| 240 | + $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key); |
| 241 | + $getPolicy = new Qiniu_RS_GetPolicy(); |
| 242 | + $privateUrl = $getPolicy->MakeRequest($baseUrl); |
| 243 | + echo "====> getPolicy result: \n"; |
| 244 | + echo $privateUrl . "\n"; |
| 245 | + |
| 246 | + |
| 247 | +<a name=fop-api></a> |
| 248 | +## 数据处理接口 |
| 249 | +七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理 |
| 250 | + |
| 251 | +<a name=fop-image></a> |
| 252 | +### 1. 图像 |
| 253 | +<a name=fop-image-info></a> |
| 254 | +#### 1.1 查看图像属性 |
| 255 | + |
| 256 | + require_once("rs.php"); |
| 257 | + require_once("fop.php"); |
| 258 | + |
| 259 | + $key = 'pic.jpg'; |
| 260 | + $domain = 'phpsdk.qiniudn.com'; |
| 261 | + |
| 262 | + //生成baseUrl |
| 263 | + $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key); |
| 264 | + $getPolicy = new Qiniu_RS_GetPolicy(); |
| 265 | + |
| 266 | + //生成fopUrl |
| 267 | + $imgInfo = new Qiniu_ImageInfo; |
| 268 | + $imgInfoUrl = $imgInfo->MakeRequest($baseUrl); |
| 269 | + |
| 270 | + //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。 |
| 271 | + $imgInfoPrivateUrl = $getPolicy->MakeRequest($imgInfoUrl, null); |
| 272 | + echo "====> imageInfo privateUrl: \n"; |
| 273 | + echo $imgInfoPrivateUrl . "\n"; |
| 274 | + |
| 275 | +将`$imgInfoPrivateUrl`粘贴到浏览器地址栏中就可以查看该图像的信息了。 |
| 276 | + |
| 277 | +<a name=fop-exif></a> |
| 278 | +#### 1.2 查看图片EXIF信息 |
| 279 | + |
| 280 | + |
| 281 | + require_once("rs.php"); |
| 282 | + require_once("fop.php"); |
| 283 | + |
| 284 | + $key = 'pic.jpg'; |
| 285 | + $domain = 'phpsdk.qiniudn.com'; |
| 286 | + |
| 287 | + //生成baseUrl |
| 288 | + $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key); |
| 289 | + $getPolicy = new Qiniu_RS_GetPolicy(); |
| 290 | + |
| 291 | + //生成fopUrl |
| 292 | + $imgExif = new Qiniu_Exif; |
| 293 | + $imgExifUrl = $imgExif->MakeRequest($baseUrl); |
| 294 | + |
| 295 | + //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。 |
| 296 | + $imgExifPrivateUrl = $getPolicy->MakeRequest($imgExifUrl, null); |
| 297 | + echo "====> imageView privateUrl: \n"; |
| 298 | + echo $imgExifPrivateUrl . "\n"; |
| 299 | + |
| 300 | +<a name=fop-image-view></a> |
| 301 | +#### 1.3 生成图片预览 |
| 302 | + |
| 303 | + require_once("rs.php"); |
| 304 | + require_once("fop.php"); |
| 305 | + |
| 306 | + $key = 'pic.jpg'; |
| 307 | + $domain = 'phpsdk.qiniudn.com'; |
| 308 | + |
| 309 | + //生成baseUrl |
| 310 | + $baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key); |
| 311 | + $getPolicy = new Qiniu_RS_GetPolicy(); |
| 312 | + |
| 313 | + //生成fopUrl |
| 314 | + $imgView = new Qiniu_ImageView; |
| 315 | + $imgView->Mode = 1; |
| 316 | + $imgView->Width = 60; |
| 317 | + $imgView->Height = 30; |
| 318 | + $imgViewUrl = $imgView->MakeRequest($baseUrl); |
| 319 | + |
| 320 | + //对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。 |
| 321 | + $imgViewPrivateUrl = $getPolicy->MakeRequest($imgViewUrl, null); |
| 322 | + echo "====> imageView privateUrl: \n"; |
| 323 | + echo $imgViewPrivateUrl . "\n"; |
| 324 | + |
| 325 | + |
| 326 | +<a name=contribution></a> |
| 327 | +## 贡献代码 |
| 328 | + |
| 329 | +1. Fork |
| 330 | +2. 创建您的特性分支 (`git checkout -b my-new-feature`) |
| 331 | +3. 提交您的改动 (`git commit -am 'Added some feature'`) |
| 332 | +4. 将您的修改记录提交到远程 `git` 仓库 (`git push origin my-new-feature`) |
| 333 | +5. 然后到 github 网站的该 `git` 远程仓库的 `my-new-feature` 分支下发起 Pull Request |
| 334 | + |
| 335 | + |
| 336 | +<a name=license></a> |
| 337 | +## 许可证 |
| 338 | + |
| 339 | +Copyright (c) 2013 qiniu.com |
| 340 | + |
| 341 | +基于 MIT 协议发布: |
| 342 | + |
| 343 | +* [www.opensource.org/licenses/MIT](http://www.opensource.org/licenses/MIT) |
| 344 | + |
0 commit comments