基础操作
注册七牛云并且(个人或企业认证)
新建存储空间
获取公钥和私钥
PHP 代码
引入cdk
composer require qiniu/php-sdk
php写入
static private $accessKey = '************************'; //公钥
static private $secretKey = '************************';//私钥
static private $bucket = '*****';//空间名称
static private $token; //token
static private $domain = '************************'; //域名
public function __construct()
{
if( !self::$token ){
$auth = new Auth(self::$accessKey, self::$secretKey);
// 生成上传Token
self::$token = $auth->uploadToken(self::$bucket);
}
return self::$token;
}
源文件上传图片到七牛云
/**
* Notes: 七牛云上传图片
* Author: Seven
* Metthod: getUploadManager
* Date: 2023/1/6 15:05
* @param $file
* @return string[]
* @throws \Exception
*/
public function getUploadManager($file){
$uploadMgr = new UploadManager();
// 要上传文件的本地路径
$filePath = $file;
// 上传到存储后保存的文件名
$key = date('Ym').'/'.md5(time()).'.'.$file->extension();
list($ret, $err) = $uploadMgr->putFile(self::$token, $key, $filePath, null, 'application/octet-stream', true, null, 'v1');
if($err !== null){
return ['code'=>'-1','msg'=>'上传失败'];
}
return ['code'=>'0','data'=>self::$domain.$ret['key']];
}
结果
base64上传图片到七牛云
/**
* Notes: 上传base64位图片到七牛云
* Author: Seven
* Metthod: getUploadPictureBase64
* Date: 2023/1/6 15:16
* @param $base64
* @return array|false
*/
public function getUploadPictureBase64($base64)
{
$base64 = trim($base64);
$base64 = str_replace('data:image/jpeg;base64,','',$base64);
if($base64)
{
//自定义图片名称
$key = 'picture/'.date('Ym').'/'.md5(time()).'.png';
$str = base64_encode($key);//需要吧名称改为base64格式,否则无法生效
//华北空间使用 upload-z1.qiniup.com,
//华南空间使用 upload-z2.qiniup.com,
//北美空间使用 upload-na0.qiniup.com。
$qiniu = self::curl_picture("http://upload-z1.qiniup.com/putb64/-1/key/".$str,$base64,self::$token);
$qiniuArr = json_decode($qiniu,true);
if(!isset($qiniuArr['key'])){
return ['code'=>'-1','msg'=>$qiniuArr['error']];
}
return ['code'=>'0','data'=>self::$domain.$qiniuArr['key'],];
}
return ['code'=>'-1','msg'=>'base64格式错误'];
}
/**
* Notes: 七牛上传base64图片
* Author: Seven
* Metthod: curl_picture
* Date: 2023/1/6 16:10
* @param $remote_server
* @param $post_string
* @param $upToken
* @return bool|string
*/
public function curl_picture($remote_server,$post_string,$upToken)
{
$headers = array();
$headers[] = 'Content-Type:application/octet-stream';
$headers[] = 'Authorization:UpToken '.$upToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$remote_server);
curl_setopt($ch, CURLOPT_HTTPHEADER ,$headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
结果