この SDK は PHP 5.1.0 以降に適しています。 Qiniu Cloud Storage の公式 API に基づいて構築されています。この SDK を使用して Web アプリケーションを構築すると、非常に便利な方法でデータを Qiniu Cloud Storage に安全に保存できます。ネットワーク アプリケーションが Web サイト プログラムであっても、クラウド (サーバー プログラム) から端末 (ハンドヘルド デバイス アプリケーション) までのアーキテクチャを含むサービスやアプリケーションであっても、Qiniu Cloud Storage とその SDK は、ユーザーがアップロードできるアプリケーションの端末を作成できます。高速ダウンロードを実現しながら、サーバーの軽量化も実現します。
SDKソースコードアドレス: https://github.com/qiniu/php-sdk/tags
Qiniu Cloud Storage にアクセスするには、署名認証用の有効なアクセス キーと秘密キーのペアが必要です。次の手順で取得できます:
サンプルコードは次のとおりです:
リーリーサンプルコードは次のとおりです:
リーリーサンプルコードは次のとおりです:
リーリーサンプルコードは次のとおりです:
リーリー###1. ファイルのアップロード
エンドユーザーのアップロードエクスペリエンスを可能な限り向上させるために、Qiniu Cloud Storage はクライアント直接アップロード機能を先駆けて開発しました。一般的なクラウド ストレージのアップロード プロセスは次のとおりです:
リーリーこれにより追加のアップロードプロセスが追加され、ローカルストレージよりも比較的遅くなります。しかし、Qiniu はクライアント側の直接送信を導入し、アップロード プロセス全体を次のように調整しました:
リーリークライアント (エンド ユーザー) は Qiniu のサーバーに直接アップロードします。インテリジェントな DNS 解決を通じて、Qiniu はエンド ユーザーに最も近い ISP サービス プロバイダー ノードを選択します。これはローカル ストレージよりもはるかに高速です。ファイルが正常にアップロードされた後、Qiniu のサーバーはコールバック関数を使用して、非常に小さなデータ (キーなど) をアプリケーション サーバーに渡すだけでよく、アプリケーション サーバーはそれを保存します。
Qiniu Cloud Storage では、アップロードプロセス全体は大まかに次のステップに分かれています:
業務サーバーへのコールバックの処理は任意であり、業務サーバーが発行するアップトークンに依存することに注意してください。コールバックがない場合、Qiniu はいくつかの標準情報 (ファイルのハッシュなど) をクライアントに返します。アップロードがビジネスサーバーで行われる場合、上記のプロセスは当然次のように簡略化できます。
サーバー側で生成されるアップトークンのコードは次のとおりです:
リーリーファイルを Qiniu にアップロードします (通常はクライアント側で実行されますが、サーバー側でも実行される場合があります):
文字列をアップロードします
リーリーローカルファイルをアップロードする
リーリーuptoken は実際には、AccessKey/SecretKey を使用したデジタル署名されたアップロード戦略 (Qiniu_RS_PutPolicy
) であり、アップロード プロセス全体の動作を制御します。何を決定できるかを簡単に見てみましょう:
<code class="php"><span class="class"><span class="keyword">class</span> <span class="title">Qiniu_RS_PutPolicy</span> {</span> <span class="keyword">public</span> <span class="variable">$Scope</span>; <span class="comment">// 必选项。可以是 bucketName 或者 bucketName:key</span> <span class="keyword">public</span> <span class="variable">$CallbackUrl</span>; <span class="comment">// 可选</span> <span class="keyword">public</span> <span class="variable">$CallbackBody</span>; <span class="comment">// 可选</span> <span class="keyword">public</span> <span class="variable">$ReturnUrl</span>; <span class="comment">// 可选, 更贴切的名字是 redirectUrl。</span> <span class="keyword">public</span> <span class="variable">$ReturnBody</span>; <span class="comment">// 可选</span> <span class="keyword">public</span> <span class="variable">$AsyncOps</span>; <span class="comment">// 可选</span> <span class="keyword">public</span> <span class="variable">$EndUser</span>; <span class="comment">// 可选</span> <span class="keyword">public</span> <span class="variable">$Expires</span>; <span class="comment">// 可选。默认是 3600 秒</span> } </code>
scope
限定客户端的权限。如果 scope
是 bucket,则客户端只能新增文件到指定的 bucket,不能修改文件。如果 scope
为 bucket:key,则客户端可以修改指定的文件。callbackUrl
设定业务服务器的回调地址,这样业务服务器才能感知到上传行为的发生。callbackBody
设定业务服务器的回调信息。文件上传成功后,七牛向业务服务器的callbackUrl发送的POST请求携带的数据。支持 魔法变量 和 自定义变量。returnUrl
设置用于浏览器端文件上传成功后,浏览器执行301跳转的URL,一般为 HTML Form 上传时使用。文件上传成功后浏览器会自动跳转到 returnUrl?upload_ret=returnBody
。returnBody
可调整返回给客户端的数据包,支持 魔法变量 和 自定义变量。returnBody
只在没有 callbackUrl
时有效(否则直接返回 callbackUrl
返回的结果)。不同情形下默认返回的 returnBody
并不相同。在一般情况下返回的是文件内容的 hash
,也就是下载该文件时的 etag
;但指定 returnUrl
时默认的 returnBody
会带上更多的信息。asyncOps
可指定上传完成后,需要自动执行哪些数据处理。这是因为有些数据处理操作(比如音视频转码)比较慢,如果不进行预转可能第一次访问的时候效果不理想,预转可以很大程度改善这一点。关于上传策略更完整的说明,请参考 uptoken。
七牛云存储上的资源下载分为 公有资源下载 和 私有资源下载 。
私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。
新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。
如果在给bucket绑定了域名的话,可以通过以下地址访问。
<code class="xml">[GET] http://<span class="tag"><<span class="title">domain</span>></span>/<span class="tag"><<span class="title">key</span>></span> </code>
示例代码:
<code class="ruby"><span class="variable">$key</span> = <span class="string">'pic.jpg'</span>; <span class="variable">$domain</span> = <span class="string">'phpsdk.qiniudn.com'</span>; <span class="regexp">//</span><span class="variable">$baseUrl</span> 就是您要访问资源的地址 <span class="variable">$baseUrl</span> = <span class="constant">Qiniu_RS_MakeBaseUrl</span>(<span class="variable">$domain</span>, <span class="variable">$key</span>); </code>
其中可以到七牛云存储开发者自助网站绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(<bucket>.qiniudn.com
)。注意,尖括号不是必需,代表替换项。
私有资源必须通过临时下载授权凭证(downloadToken)下载,如下:
<code class="xml">[GET] http://<span class="tag"><<span class="title">domain</span>></span>/<span class="tag"><<span class="title">key</span>></span>?e=<span class="tag"><<span class="title">deadline</span>></span>&token=<span class="tag"><<span class="title">downloadToken</span>></span> </code>
注意,尖括号不是必需,代表替换项。
私有下载链接可以使用 SDK 提供的如下方法生成:
<code class="php"><span class="keyword">require_once</span>(<span class="string">"qiniu/rs.php"</span>); <span class="variable">$key</span> = <span class="string">'pic.jpg'</span>; <span class="variable">$domain</span> = <span class="string">'phpsdk.qiniudn.com'</span>; <span class="variable">$accessKey</span> = <span class="string">'<YOUR_APP_ACCESS_KEY>'</span>; <span class="variable">$secretKey</span> = <span class="string">'<YOUR_APP_SECRET_KEY>'</span>; Qiniu_SetKeys(<span class="variable">$accessKey</span>, <span class="variable">$secretKey</span>); <span class="variable">$baseUrl</span> = Qiniu_RS_MakeBaseUrl(<span class="variable">$domain</span>, <span class="variable">$key</span>); <span class="variable">$getPolicy</span> = <span class="keyword">new</span> Qiniu_RS_GetPolicy(); <span class="variable">$privateUrl</span> = <span class="variable">$getPolicy</span>->MakeRequest(<span class="variable">$baseUrl</span>, <span class="keyword">null</span>); <span class="keyword">echo</span> <span class="string">"====> getPolicy result: \n"</span>; <span class="keyword">echo</span> <span class="variable">$privateUrl</span> . <span class="string">"\n"</span>; </code>
七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理
<code class="php"><span class="keyword">require_once</span>(<span class="string">"qiniu/rs.php"</span>); <span class="keyword">require_once</span>(<span class="string">"qiniu/fop.php"</span>); <span class="variable">$key</span> = <span class="string">'pic.jpg'</span>; <span class="variable">$domain</span> = <span class="string">'phpsdk.qiniudn.com'</span>; <span class="variable">$accessKey</span> = <span class="string">'<YOUR_APP_ACCESS_KEY>'</span>; <span class="variable">$secretKey</span> = <span class="string">'<YOUR_APP_SECRET_KEY>'</span>; Qiniu_SetKeys(<span class="variable">$accessKey</span>, <span class="variable">$secretKey</span>); <span class="comment">//生成baseUrl</span> <span class="variable">$baseUrl</span> = Qiniu_RS_MakeBaseUrl(<span class="variable">$domain</span>, <span class="variable">$key</span>); <span class="comment">//生成fopUrl</span> <span class="variable">$imgInfo</span> = <span class="keyword">new</span> Qiniu_ImageInfo; <span class="variable">$imgInfoUrl</span> = <span class="variable">$imgInfo</span>->MakeRequest(<span class="variable">$baseUrl</span>); <span class="comment">//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。</span> <span class="variable">$getPolicy</span> = <span class="keyword">new</span> Qiniu_RS_GetPolicy(); <span class="variable">$imgInfoPrivateUrl</span> = <span class="variable">$getPolicy</span>->MakeRequest(<span class="variable">$imgInfoUrl</span>, <span class="keyword">null</span>); <span class="keyword">echo</span> <span class="string">"====> imageInfo privateUrl: \n"</span>; <span class="keyword">echo</span> <span class="variable">$imgInfoPrivateUrl</span> . <span class="string">"\n"</span>; </code>
将$imgInfoPrivateUrl
粘贴到浏览器地址栏中就可以查看该图像的信息了。
<code class="php"><span class="keyword">require_once</span>(<span class="string">"qiniu/rs.php"</span>); <span class="keyword">require_once</span>(<span class="string">"qiniu/fop.php"</span>); <span class="variable">$key</span> = <span class="string">'pic.jpg'</span>; <span class="variable">$domain</span> = <span class="string">'phpsdk.qiniudn.com'</span>; <span class="variable">$accessKey</span> = <span class="string">'<YOUR_APP_ACCESS_KEY>'</span>; <span class="variable">$secretKey</span> = <span class="string">'<YOUR_APP_SECRET_KEY>'</span>; Qiniu_SetKeys(<span class="variable">$accessKey</span>, <span class="variable">$secretKey</span>); <span class="comment">//生成baseUrl</span> <span class="variable">$baseUrl</span> = Qiniu_RS_MakeBaseUrl(<span class="variable">$domain</span>, <span class="variable">$key</span>); <span class="comment">//生成fopUrl</span> <span class="variable">$imgExif</span> = <span class="keyword">new</span> Qiniu_Exif; <span class="variable">$imgExifUrl</span> = <span class="variable">$imgExif</span>->MakeRequest(<span class="variable">$baseUrl</span>); <span class="comment">//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。</span> <span class="variable">$getPolicy</span> = <span class="keyword">new</span> Qiniu_RS_GetPolicy(); <span class="variable">$imgExifPrivateUrl</span> = <span class="variable">$getPolicy</span>->MakeRequest(<span class="variable">$imgExifUrl</span>, <span class="keyword">null</span>); <span class="keyword">echo</span> <span class="string">"====> imageView privateUrl: \n"</span>; <span class="keyword">echo</span> <span class="variable">$imgExifPrivateUrl</span> . <span class="string">"\n"</span>; </code>
<code class="php"><span class="keyword">require_once</span>(<span class="string">"qiniu/rs.php"</span>); <span class="keyword">require_once</span>(<span class="string">"qiniu/fop.php"</span>); <span class="variable">$key</span> = <span class="string">'pic.jpg'</span>; <span class="variable">$domain</span> = <span class="string">'phpsdk.qiniudn.com'</span>; <span class="variable">$accessKey</span> = <span class="string">'<YOUR_APP_ACCESS_KEY>'</span>; <span class="variable">$secretKey</span> = <span class="string">'<YOUR_APP_SECRET_KEY>'</span>; Qiniu_SetKeys(<span class="variable">$accessKey</span>, <span class="variable">$secretKey</span>); <span class="comment">//生成baseUrl</span> <span class="variable">$baseUrl</span> = Qiniu_RS_MakeBaseUrl(<span class="variable">$domain</span>, <span class="variable">$key</span>); <span class="comment">//生成fopUrl</span> <span class="variable">$imgView</span> = <span class="keyword">new</span> Qiniu_ImageView; <span class="variable">$imgView</span>->Mode = <span class="number">1</span>; <span class="variable">$imgView</span>->Width = <span class="number">60</span>; <span class="variable">$imgView</span>->Height = <span class="number">120</span>; <span class="variable">$imgViewUrl</span> = <span class="variable">$imgView</span>->MakeRequest(<span class="variable">$baseUrl</span>); <span class="comment">//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。</span> <span class="variable">$getPolicy</span> = <span class="keyword">new</span> Qiniu_RS_GetPolicy(); <span class="variable">$imgViewPrivateUrl</span> = <span class="variable">$getPolicy</span>->MakeRequest(<span class="variable">$imgViewUrl</span>, <span class="keyword">null</span>); <span class="keyword">echo</span> <span class="string">"====> imageView privateUrl: \n"</span>; <span class="keyword">echo</span> <span class="variable">$imgViewPrivateUrl</span> . <span class="string">"\n"</span>; </code>
Copyright © 2013 qiniu.com
基于 MIT 协议发布:
七牛云存储提供的免费额度:
存储空间10GB
每月 PUT/DELETE 10万次请求
每月下载流量10GB
每月 GET 100万次请求
欢迎关注方倍工作室微信,了解我们及行业的最新动态