首页 > 其他分享 >fastadmin 文件上传腾讯云

fastadmin 文件上传腾讯云

时间:2024-09-05 17:52:10浏览次数:10  
标签:info config region secretKey tencent result 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方法

 

标签:info,config,region,secretKey,tencent,result,fastadmin,腾讯,上传
From: https://blog.csdn.net/jmkweb/article/details/141937212

相关文章

  • 【python】本地local_setting设置与上传仓库
    1.我们在开发过程中,有的配置数据不希望别人看到,例如:数据库信息2.如是我们可以在本地配置一个local_setting.py文件2.1:在setting中最后,导入local_settingtry:from.local_settingimport*exceptImportError:pass2.2:将自己的配置数据,写入到local_setting......
  • 【春秋云境】CVE-2020-26048(文件上传漏洞)
    点击路径,进入页面,尝试攻克。admin/admin弱口令成功登录寻找能进行文件上传的地方,点击“文件管理”尝试上传php后缀的一句话木马文件,发现失败上传png后缀的一句话木马文件,发现成功对文件重命名前打开bp,进行抓包,修改后缀名删除.htaccess文件(该文件具有重定向URL、......
  • 网站上传图片被压缩怎么解决
    当网站上传图片被压缩导致质量下降时,可以通过以下几种方式来解决这个问题:1.了解平台压缩机制首先了解平台对图片压缩的具体机制,比如压缩算法、压缩比例等。这有助于针对性地采取措施。2.优化图片上传前的准备按照规定尺寸设计素材:确保上传的图片符合平台要求的尺寸,避免不必......
  • 【漏洞复现】致远OA fileUpload.do 任意文件上传漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......
  • vue3 地图(天地图,百度地图,腾讯地图,高德地图)封装组件调用 带地图搜索功能common_tencent
    废话不多说直接上组件代码:<template><!--地图--><divclass="containerw"><divid="map"class="mapradius-md":style="{width:width,height:height}"></div></div><......
  • ASP.NET MVC+LayUI视频上传
    前言前段时间在使用APS.NETMVC+LayUI做视频上传功能的时,发现当上传一些内存比较大的视频就会提示上传失败,后来通过查阅相关资料发现.NETMVC框架为考虑安全问题,在运行时对请求的文件的长度(大小)做了限制默认为4MB(4096KB),因此我们需要在Web.Config中设置最大请求文件长度大小,本文主要......
  • fastadmin 弹出窗口的功能
    页面A,html代码中添加一个按钮:添加复制页面A,在js代码中添加以下代码监听class=spec_add_btn这个按钮的点击事件并弹窗打开页面B$(document).on('click','.spec_add_btn',function(event){varurl=$(this).attr('data-url');if(!url)returnfalse;varmsg=$(this).at......
  • git上传本地文件到码云gitee
    1在码云上创建项目在码云首页顶部,下图所示,右上角头像旁边的加号,鼠标移上去会显示下拉的,点击“新建项目”。填写好项目的名称、路径等,然后点击“提交”,下图所示。 2 建立本地仓库并初始化在本地电脑的一个盘里面新建一个文件夹,如文件夹名为ecshopadaptio......
  • 通过命令行在阿里云服务器向MySQL上传CSV格式的表
    前言:由于不知道为什么,IDEA中没法导出sql格式的表,只能导出csv格式的,研究半天,记录一下历程。注意,sql文件包含SQL语句,如创建表、插入数据等,它能定义数据库结构并填充数据。csv文件是纯文本文件,通常用于存储表格数据,每行代表一条记录,字段之间用逗号分隔。也就是说,要向服务器导入......
  • 前端Pinia教程,Pinia+Vue3+Vite+TypeScript+腾讯IM聊天解决方案项目实战
    前端Pinia教程:‌Pinia+Vue3+Vite+TypeScript+腾讯IM聊天解决方案项目实战在前端开发中,‌随着Vue3的普及和Vite构建工具的兴起,‌结合TypeScript和Pinia进行状态管理成为了一个高效且受欢迎的选择。‌本文将详细介绍如何结合这些技术栈以及腾讯IM聊天解决方案,‌搭建一个高效的前端......