七牛上传图片 PHP版

2017-10-25 15:33:08 查看 1367 回复 0

项目里后台使用的是java,上传是php发给java处理。但是遇到一个问题就是头像转存。获取到第三方头像(QQ,微博,微信等)的时候,需要先下载下来转成base64编码才能发给java处理。中间浪费了好多时间。

抽空决定优化一下,由php执行上传七牛操作。简单看了下七牛的文档,把七牛sdk加在项目里。

下边记录下代码

<?php
require_once ADDON_PATH.'qiniu/autoload.php';
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use function Qiniu\json_decode;
use Qiniu\Storage\BucketManager;

class qiniuModel  extends Model
{	//文件上传
	function qnUpload($params){
		$accessKey = '********';
		$secretKey = '********';
		$auth = new Auth($accessKey, $secretKey);
		$bucket = '********';
		
		$returnBody = '{"key":"$(key)","data":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}';
		$policy = array(
				'returnBody' => $returnBody
		);
		$expires=7200;
		$token = $auth->uploadToken($bucket, null, $expires, $policy, true);
		$uploadMgr = new UploadManager();
		//----------------------------------------upload demo2 ----------------------------------------
		// 上传文件到七牛
		$filePath = $params['file'];
		$key = (isset($params['filename']) && $params['filename']) ? $params['filename'] : '' ;
		
		list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
		if ($err !== null) {
			$this->error=$err;
			return false;
		} else {
			return $ret['data'];
		}
	}
	//远程文件上传
	function urlUpload($params){
		$accessKey = '********';
		$secretKey = '********';
		$auth = new Auth($accessKey, $secretKey);
		$bucketMgr=new BucketManager($auth);
		$bucket = '********';
		$filePath = $params['file'];
		$key = (isset($params['filename']) && $params['filename']) ? $params['filename'] : '' ;
		
		list($ret, $err) = $bucketMgr->fetch($filePath, $bucket,$key);
		
		if ($err !== null) {
			$this->error=$err;
			return false;
		} else {
			return $ret['key'];
		}
		
	}
	
}

能用为主,后续优化。。。
七牛sdk下载地址:https://github.com/qiniu/php-sdk/releases?ref=developer.qiniu.com