首先登陆七牛云服务器 ,建立对应图片存储空间,命名七牛云上传空间名称。
此时 七牛云会分配一个对应标识。
上传到七牛云服务器大概步骤是,首先从七牛云那里获取一个token标识,此可是一个身份凭证。前端在拿着这个凭证,调取七牛云上传图片接口,配合着刚才得到的
token,上传文件。在这一步 记得配置图片回调接口。在回调接口里 处理 图片存储到服务器端的相关信息。
1)在项目下引入七牛云类包,最好是安装七牛云最新的类包哦~
2) 在项目config下建立七牛云专门的配置文件
<?php
return [
'bucket' => 'wash', //上传到七牛云图片存储空间名称
'accessKey' => '-------------------------------', //对应七牛云分配的标识
'secretKey' => '--------------------------------',//对应七牛云分配的标识
'expire' => 3600,
'callbackUrl' => '/qiniu_callback',
'contentType' => 'application/json',
'quality' => env('QINIU_QUALITY', 100),
'detectMime' => 1,
'mimeLimit' => 'video/*;audio/*;image/*',
'minWith' => 750,
'ydUrl' => env('YD_URL'),
'CashCallbackUrl'=>'/q/callback' //回调地址
];
3) 获取七牛上传凭证 token(示例代码在控制器中)
public function getQiNiuToken(Request $request)
{
try{
$qiniu = new QiNiu(); //七牛云方法的相关构造文件
$qiniu->setCashCallbackUrl(); //设置七牛云回调地址
$token = $qiniu->getToken(); //得到七牛云凭证token
return response()->json(['uptoken'=>$token]);
}catch (\Exception $exception)
{
\Illuminate\Support\Facades\Log::info('获取七牛token异常', [$exception]);
return response()->json(['uptoken'=>'']);
}
}
4)以下代码在qiniu文件中
<?php
/**
* Created by PhpStorm.
* User: HWT51
* Date: 2018/8/7
* Time: 17:15
*/
namespace App\Vendor\QiNiu;
use App\Models\File;
use App\Unit\Json;
use Log;
use Qiniu\Auth;
use function Qiniu\base64_urlSafeDecode;
use function Qiniu\base64_urlSafeEncode;
use Qiniu\Http\Client;
use Qiniu\Http\Error;
use Qiniu\Processing\PersistentFop;
class QiNiu
{
/*
* 存库空间名
*/
protected $bucket;
/*
* 访问密匙
*/
protected $accessKey;
/*
* 加密密匙
*/
protected $secretKey;
/*
* 过期时间
*/
protected $expire;
protected $accessToken;
protected $userId;
protected $callbackUrl;
protected $callbackBody = [
'desc' => '$(x:desc)',
'file_key' => '$(key)',
'file_size' => '$(fsize)',
'file_name' => '$(fname)',
'mimeType' => '$(mimeType)',
'image_width' => '$(imageInfo.width)',
'image_height' => '$(imageInfo.height)',
'image_orientation' => '$(imageInfo.orientation)',
];
protected $files;
protected $detectMime;
protected $mimeLimit;
/**
* QiNiu constructor.
* @param null $userId
*/
public function __construct($userId = null)
{
$this->userId = $userId;
$this->bucket = config('qiniu.bucket');
$this->accessKey = config('qiniu.accessKey');
$this->secretKey = config('qiniu.secretKey');
$this->expire = config('qiniu.expire');
$this->contentType = config('qiniu.contentType');
$this->callbackUrl =config('qiniu.ydUrl') . config('qiniu.ydCallbackUrl');
$this->pfopCallbackUrl = config('qiniu.dpaUrl') . config('qiniu.pfopCallbackUrl');
$this->fusionUrl = config('qiniu.fusionUrl');
$this->spaceUrl = config('qiniu.spaceUrl');
$this->detectMime = config('qiniu.detectMime');
$this->mimeLimit = config('qiniu.mimeLimit');
}
/**
* @param null $policy
* @param bool $strictPolicy
* @return string
*/
public function generateToken($policy = null, $strictPolicy = true)
{
$auth = new Auth($this->accessKey, $this->secretKey);
$result = $auth->uploadToken($this->bucket, null, $this->expire, $policy, $strictPolicy);
return $result;
}
/**
* set bucket
*
* @param $bucket
* @return $this
*/
public function setBucket($bucket)
{
$this->bucket = $bucket;
return $this;
}
/**
* set expire
*
* @param $expire
* @return $this
*/
public function setExpire($expire)
{
$this->expire = $expire;
return $this;
}
/**
* decode qiniuToken
*
* @param $token
* @return mixed
*/
public static function decodeToken($token)
{
$tmpArr = explode(':', $token);
$decodeData = base64_urlSafeDecode($tmpArr[2]);
$data = json_decode($decodeData, true);
return $data;
}
public function setFiles(array $files)
{
$this->files = $files;
return $this;
}
/**
* @return array
* @throws \Exception
*/
public function generateTokensForFiles()
{
$files = $this->preProcessFiles()
->processFiles()
->generateTokenForFile();
return $files;
}
public function getToken()
{
$callbackUrl = $this->callbackUrl;
$callbackBody = $this->callbackBody;
$callbackBodyJson = json_encode($callbackBody);
$policy = [
'fsizeLimit' => config('setting.FILE_MAX_SIZE'),
'callbackUrl' => $callbackUrl,
'callbackBody' => $callbackBodyJson,
'callbackBodyType' => $this->contentType,
'detectMime' => $this->detectMime,
'mimeLimit' => $this->mimeLimit
];
\Illuminate\Support\Facades\Log::info('上传七牛文件信息',[$policy]);
$token = $this->generateToken($policy);
return $token;
}
/**
* @param $callbackBody
* @param $authorization
* @return bool
*/
public function verifyCallback($callbackBody, $authorization)
{
$auth = new Auth($this->accessKey, $this->secretKey);
$result = $auth->verifyCallback(
$this->contentType,
$authorization,
$this->callbackUrl,
$callbackBody
);
return $result;
}
public function setYdCallbackUrl()
{ //回调地址域名 //回调地址接口
$this->callbackUrl = config('qiniu.ydUrl') . config('qiniu.CashCallbackUrl');
}
}
5)在回调地址接口 ,处理图片存储到七牛云的相关操作

大概就是这样了,下面还有一系列处理图片信息存储到表里的流程,就不贴啦
七牛云图片上传教程
473





