fastadmin后台文件上传七牛云

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方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值