七牛上传图片 PHP版
项目里后台使用的是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