composer安装SDK
composer require qiniu/php-sdk
config设置七牛云配置,也可以存入在数据库
'qiniu'=>[
'qiniu_accesskey'=>'AK',
'qiniu_secretkey'=>'SK',
'qiniu_bucket'=>'空间名称',
'qiniu_domain'=>'外链域名,记得加上http://',
]
在app\common\controller创建Qiniu.php
<?php
namespace app\common\controller;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use think\Controller;
use think\Db;
/**
* 七牛基类
*/
class Qiniu extends Controller
{
/** * 上传
* @param array $file 图片参数
* @return array
*/
public function uploadOne($config)
{
$data = $this->request->file();
$info = $data['file']->getInfo();
$domain = $config['qiniu_domain'];
$bucket = $config['qiniu_bucket'];
$auth = new Auth($config['qiniu_accesskey'], $config['qiniu_secretkey']);
// 生成上传Token
$token = $auth->uploadToken($bucket);
$parts = explode('.', $info['name']);
$extension = end($parts);
$filename = hash('md5', uniqid()).mt_rand(1,99).'.'.$extension;
// 构建 UploadManager 对象
$uploadMgr = new UploadManager();
list($ret, $err) = $uploadMgr->putFile($token, 'uploads/'.$filename, $info['tmp_name']);
if ($err !== null) {
return ['code' => 0, 'msg' => '上传失败'];
} else {
//返回图片的完整URL
Db::name('attachment')->insert([
'admin_id' =>(int)session('admin.id'),
'user_id' =>0,
'filesize' => $info['size'],
'imagetype' => $info['type'],
'imageframes' => 0,
'mimetype' => $info['type'],
'filename' => $filename,
'url' => $ret['key'],
'createtime' => time(),
'updatetime' => time(),
'uploadtime' => time(),
'storage' => 'qiniu',
'sha1' => '',
'extparam' => '',
]);
return ['code' => 1, 'msg' => '上传完成', 'data' => ($domain . $ret['key'])];
}
}
}
修改文件app\admin\controller下的Ajax.php
以及upload方法,主要就是调用Qiniu.php中的uploadOne方法,可以根据自己的喜好调用
后台的附件管理还需要修改一下,在app\admin\controller\general\Attachment.php文件新增以及修改代码
该文件内的index方法
以上是后台调用上传文件的修改
前端API控制器调用的文件上传,需要在app\api\controller\Common.php文件中,像修改上面Ajax.php文件的方式再改一下,获取直接在接口中根据自己的逻辑调用Qiniu.php中的uploadOne方法