【PHP】七牛云存储 SDK of PHP 基础使用

为了七牛大赛!!!

研究了一天的七牛云存储 PHP SDK,他的上面文档说的都是代码片段,不能拿来直接用,我现在把基本操作已经封装好,直接引入文件就好。下面来看看基本的实现。

首先要去官网下载好PHP的sdk,http://developer.qiniu.com/download/index.html ,解压以后把qiniu这个文件夹放在自己的php工作项目目录下。这一步是以后所有的前提。

官方文档在这里:http://developer.qiniu.com/docs/v6/sdk/php-sdk.html

我自己封装的代码:
第一行要引入这个文件

require_once("qiniu/rs.php");

这两个参数是七牛给你的,注册账号以后会有

	private $accessKey =【自己填】 ;
	private $secretKey =【自己填】 ;
	private $client;

初始化函数,每一个方法都需要调用这个

	/**
	 * 初始化
	 */
	private function Init(){
		$this->accessKey = '';
		$this->secretKey = '';
		Qiniu_SetKeys($this->accessKey, $this->secretKey);
		$this->client = new Qiniu_MacHttpClient(null);
	}

下面的方法可以查看单个文件信息

	/**
	 * 查看单个文件信息
	 * @param string $bucket 空间名称
	 * @param string $key    文件名
	 */
	function FileInfo($bucket,$key){
		$this->Init();
		list($ret,$err) = Qiniu_RS_Stat($this->client, $bucket, $key);
		echo $key." info is \n";
		if($err!==null){
			var_dump($err);
		}else{
			var_dump($ret);
		}
	}
	

复制一个文件

	/**
	 * 复制文件
	 * @param string $bucketSrc  源空间
	 * @param string  $keySrc    源文件名
	 * @param string $bucketDest 目标空间
	 * @param string $keyDest    目标空间名
	 */
	function CopyFile($bucketSrc,$keySrc,$bucketDest,$keyDest){
		$this->Init();
		$err = 	Qiniu_RS_Copy($this->client, $bucketSrc, $keySrc, $bucketDest, $keyDest);
		echo $keySrc." copy result:\n";
		if($err!==null){
			var_dump($err);
		}else{
			echo "seccuss!\n".$keyDest." is at ".$bucketDest;
		}
	}

移动一个文件

	/**
	 * 移动文件
	 * @param string $bucketSrc     源空间
	 * @param string $keySrc        源文件名
	 * @param string $bucketDest    目标空间
	 * @param string $keyDest       目标文件名
	 */
	function MoveFile($bucketSrc,$keySrc,$bucketDest,$keyDest){
		$this->Init();
		$err = 	Qiniu_RS_Move($this->client, $bucketSrc, $keySrc, $bucketDest, $keyDest);
		echo $keySrc." move result:\n";
		if($err!==null){
			var_dump($err);
		}else{
			echo "seccuss!\n".$keyDest." is at ".$bucketDest;
		}
	}

删除一个文件

	/**
	 * 删除文件
	 * @param string $bucket  空间
	 * @param string $key     文件名
	 */
	function DeleteFile($bucket,$key){
		$this->Init();
		$err = Qiniu_RS_Delete($this->client,$bucket,$key);
		echo $key." delete result:\n";
		if($err!==null){
			var_dump($err);
		}else{
			echo "seccuss!\n";
		}
	}

获取token,这个很重要,必须要注意。客户端必须要有token才可以上传或者下载

	/**
	 * 获取上传Token
	 * @param unknown $bucket 上传目的空间
	 * @return string uptoken 上传token
	 */
	 function CreateUploadToken($bucket)  {
		$this->Init();
		$putPolicy = new Qiniu_RS_PutPolicy($bucket);
		//设置返回URL
 		$putPolicy->ReturnUrl = "http://localhost/workspace/qiniuProject/OK.html";
		$upToken = $putPolicy->Token(null);
		return $upToken;
	}

上传文件

	/**
	 * 上传文件
	 * @param string $bucket    上传空间
	 * @param string $key       上传以后的文件名
	 * @param string $fileName  要上传的文件名
	 */
	function UploadFile($bucket,$key,$fileName){
		require_once("qiniu/io.php");
		$this->Init();
		$upToken=$this->CreateUploadToken($bucket);
		$putExtra = new Qiniu_PutExtra();
		$putExtra->Crc32=1;
		list($ret,$err) = Qiniu_PutFile($upToken, $key, $fileName, $putExtra);
		echo $key." upload result \n";
		if($err!==null){
			var_dump($err);
		}else{
			var_dump($ret);
			echo $key." is at ".$bucket;
		}
	}

如果是图片,可以用这个查看图片信息

	/**
	 * 查看图片信息
	 * @param string $domain  域名
	 * @param string $key     文件名
	 */
	function ImageInfo($domain,$key){
		require_once("qiniu/fop.php");
		$this->Init();
		//生成baseURL
		$baseURL = Qiniu_RS_MakeBaseUrl($domain, $key);
		//生成fopURL
		$imageInfo = new Qiniu_ImageInfo();
		$imageInfoURL = $imageInfo->MakeRequest($baseURL);
		echo "the info of ".$key." is at <a href="$imageInfoURL" target="__blank">".$imageInfoURL."</a>
";
	}

如果是数码相机拍摄的,可以看EXIF信息

	/**
	 * 查看图片的Exif信息
	 * @param string  $domain  域名
	 * @param string  $key  文件名
	 */
	function ImageExifInfo($domain,$key){
		require_once("qiniu/fop.php");
		$this->Init();
		//生成baseURL
		$baseURL = Qiniu_RS_MakeBaseUrl($domain, $key);
		//生成fopURL
		$imageExifInfo = new Qiniu_Exif;
		$imageExifInfoURL = $imageExifInfo->MakeRequest($baseURL);
 		echo "the Exifinfo of ".$key." is at <a href="$imageExifInfoURL" target="__blank">".$imageExifInfoURL."</a>
";
;
	}

查看文件,缩略图,可以指定高度宽度

	/**
	 *查看文件
	 * @param string $domain  域名
	 * @param string $key     文件名
	 * @param string $width   宽度
	 * @param string $height  高度
	 */
	function ImageView($domain,$key,$width,$height){
		require_once("qiniu/fop.php");
		$this->Init();
		//生成baseURL
		$baseURL = Qiniu_RS_MakeBaseUrl($domain, $key);
		//生成fopURL
		$imageView = new Qiniu_ImageView();
		$imageView->Mode = 1;
		$imageView->Height = $height;
        $imageView->Width = $width;
        $imageViewUrl = $imageView->MakeRequest($baseURL);
        echo "the view of ".$key." is at <a href="$imageViewUrl" target="__blank">".$imageViewUrl."</a>
";
	}

可以为资源生成一个二维码

	/**
	 * 生成二维码
	 * @param string $domain    域名
	 * @param string $key       文件名
	 */
	function CreateQrcode($domain,$key){
		require_once("qiniu/fop.php");
		$this->Init();
		//生成baseURL
		$baseURL = Qiniu_RS_MakeBaseUrl($domain, $key);
		$qrcodeURL  = $baseURL."?qrcode/0/level/L";
		echo "the Qrcode of ".$key." is at <a href="$qrcodeURL" target="__blank">".$qrcodeURL."</a>
";

	}

这就是几乎全部的PHP操纵七牛API了。要注意的是一定要有AK和SK,七牛会给你一个,并且一定要保留好你的SK。
完整的文件在这里下载:http://liukaining.qiniudn.com/QNProcess.class.php
调用的时候把这个文件引入,并且把这个文件放在和qiniu文件夹同级。

就是这样了,我后面会继续总结高级用法,欢迎关注!

为了大赛加油!

刘凯宁@C2P
20140818

Share

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>