fastadmin 文件上传腾讯云

1-安装腾讯云SDK

composer require qcloud/cos-sdk-v5

2-腾讯云配置

<?php

namespace app\common\controller;

use Qcloud\Cos\Client;
use think\Controller;
use think\Db;

class Tencent extends Controller
{
    /**
     * 上传文件
     * @param $config
     * @param $key
     * @return array
     */
    public function uploadToTencentCloud( $config,$key = null) {
        $secretId = $config['tencent_secretid'];
        $secretKey = $config['tencent_secretkey'];
        $region = $config['tencent_area']; // 例如 ap-beijing, ap-guangzhou
        $bucket = $config['tencent_bucket'];
        $data = $this->request->file();
        $info = $data['file']->getInfo();
        $parts = explode('.', $info['name']);
        $extension = end($parts);
        $filename=hash('md5', uniqid()).mt_rand(1,99).'.'.$extension;
        $cosClient = new Client([
            'region' => $region,
            'credentials' => [
                'secretId'  => $secretId,
                'secretKey' => $secretKey
            ],
        ]);
        try {
            $result = $cosClient->putObject([
                'Bucket' => $bucket,
                'Key' => $key ?: $filename,
                'Body' => fopen($info['tmp_name'], 'rb')
            ]);
            if ($result!==false) {
                $domain=$config['tencent_domain'];
                Db::name('attachment')->insert([
                    'filesize'    => $info['size'],
                    'imagetype'   => $info['type'],
                    'imageframes' => 0,
                    'mimetype'    => $info['type'],
                    'filename'    => $filename,
                    'url'         => $result['Key'],
                    'createtime'  => time(),
                    'updatetime'  => time(),
                    'uploadtime'  => time(),
                    'storage'     => 'tencent',
                    'sha1'        => '',
                    'type'        => 3,
                    'type_url'    => $domain,
                    'extparam'    => '',
                ]);
                return ['code' => 1, 'msg' => '上传完成', 'data' => ($domain . $result['Key'])];
            }
            return ['code' => 0, 'msg' => '上传失败'];
        } catch (\Exception $e) {
            // 异常处理
            return ['code' => 0, 'msg' => $e->getMessage()];
        }
    }

    public function deleteOne($config,$key = null)
    {
        $region = $config['tencent_area']; // 例如 ap-beijing, ap-guangzhou
        $secretId = $config['tencent_secretid'];
        $secretKey = $config['tencent_secretkey'];
        $bucket = $config['tencent_bucket'];
        // 初始化COS客户端
        $cosClient = new Client([
            'region' => $region,
            'credentials' => [
                'secretId'  => $secretId,
                'secretKey' => $secretKey
            ],
        ]);

        try {
            // 删除文件
            $result = $cosClient->deleteObject(array(
                'Bucket' => $bucket,
                'Key' => $key // 要删除的文件对象键,例如:'exampleobject.txt'
            ));
            Checking::writeLog(json_encode($result),'删除成功','tencent.log');
            // 输出结果
        } catch (\Exception $e) {
            // 输出错误信息
            Checking::writeLog($e->getMessage(),'删除出错','tencent.log');
        }
    }
}

接下来修改fastadmin 上传文件  api/controller/Common.php 文件下的 upload 方法

然后修改附件选择器 admin/controller/general/Attachment.php 下的index方法

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦夏夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值