ホームページ  >  記事  >  バックエンド開発  >  Qiniu Cloud Storage 公式インターフェース PHP バージョン_PHP チュートリアル

Qiniu Cloud Storage 公式インターフェース PHP バージョン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:16:10989ブラウズ

PHP SDKv6

この 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

  • アプリへのアクセス
    • アクセスキーとシークレットキーを取得する
  • リソース管理インターフェース
    • 1 単一ファイルの属性情報を表示する
    • 2 単一のファイルをコピーします
    • 3 単一ファイルを移動する
    • 4 単一のファイルを削除する
  • アップロードとダウンロードのインターフェース
    • 1 ファイルのアップロード
      • 1.1 アップロードプロセス
      • 1.2 アップロード戦略
    • 2 ファイルのダウンロード
      • 2.1 パブリックリソースのダウンロード
      • 2.2 プライベートリソースのダウンロード
  • データ処理インターフェース
    • 画像1枚
      • 1.1 画像のプロパティを表示する
      • 1.2 画像のEXIF情報を表示する
      • 1.3 画像プレビューを生成する
  • コードを提供する
  • ライセンス

アプリアクセス

1. アクセスキーとシークレットキーを取得します

Qiniu Cloud Storage にアクセスするには、署名認証用の有効なアクセス キーと秘密キーのペアが必要です。次の手順で取得できます:

リソース管理インターフェース

1. 単一ファイルの属性情報を表示する

サンプルコードは次のとおりです:

リーリー

2. 単一のファイルをコピーします

サンプルコードは次のとおりです:

リーリー

3. 単一のファイルを移動する

サンプルコードは次のとおりです:

リーリー

4. 単一のファイルを削除します

サンプルコードは次のとおりです:

リーリー

アップロードとダウンロードのインターフェース

###1. ファイルのアップロード

エンドユーザーのアップロードエクスペリエンスを可能な限り向上させるために、Qiniu Cloud Storage はクライアント直接アップロード機能を先駆けて開発しました。一般的なクラウド ストレージのアップロード プロセスは次のとおりです:

リーリー

これにより追加のアップロードプロセスが追加され、ローカルストレージよりも比較的遅くなります。しかし、Qiniu はクライアント側の直接送信を導入し、アップロード プロセス全体を次のように調整しました:

リーリー

クライアント (エンド ユーザー) は Qiniu のサーバーに直接アップロードします。インテリジェントな DNS 解決を通じて、Qiniu はエンド ユーザーに最も近い ISP サービス プロバイダー ノードを選択します。これはローカル ストレージよりもはるかに高速です。ファイルが正常にアップロードされた後、Qiniu のサーバーはコールバック関数を使用して、非常に小さなデータ (キーなど) をアプリケーション サーバーに渡すだけでよく、アプリケーション サーバーはそれを保存します。

1.1 アップロードプロセス

Qiniu Cloud Storage では、アップロードプロセス全体は大まかに次のステップに分かれています:

業務サーバーへのコールバックの処理は任意であり、業務サーバーが発行するアップトークンに依存することに注意してください。コールバックがない場合、Qiniu はいくつかの標準情報 (ファイルのハッシュなど) をクライアントに返します。アップロードがビジネスサーバーで行われる場合、上記のプロセスは当然次のように簡略化できます。

サーバー側で生成されるアップトークンのコードは次のとおりです:

リーリー

ファイルを Qiniu にアップロードします (通常はクライアント側で実行されますが、サーバー側でも実行される場合があります):

文字列をアップロードします

リーリー

ローカルファイルをアップロードする

リーリー

1.2 アップロード戦略

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。

2. 文件下载

七牛云存储上的资源下载分为 公有资源下载 和 私有资源下载 。

私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。

新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。

2.1 公有资源下载

如果在给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>

其中可以到七牛云存储开发者自助网站绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(280134e6c3237783be1035f17b978582.qiniudn.com)。注意,尖括号不是必需,代表替换项。

2.2 私有资源下载

私有资源必须通过临时下载授权凭证(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>

数据处理接口

七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理

1. 图像

1.1 查看图像属性

<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粘贴到浏览器地址栏中就可以查看该图像的信息了。

1.2 查看图片EXIF信息

<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>

1.3 生成图片预览

<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 协议发布:

  • www.opensource.org/licenses/MIT

 

 

七牛云存储提供的免费额度:

存储空间10GB

每月 PUT/DELETE 10万次请求

每月下载流量10GB

每月 GET 100万次请求

 

欢迎关注方倍工作室微信,了解我们及行业的最新动态

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440122.htmlTechArticlePHP SDK v6 此 SDK 适用于 PHP 5.1.0 及其以上版本。基于七牛云存储官方API构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。