添加腾讯云
This commit is contained in:
parent
e3f1bd64ea
commit
1b34f10387
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace app\admin\controller;
|
||||
|
||||
require_once '../extend/oss/autoload.php';
|
||||
// require_once '../extend/oss/autoload.php';
|
||||
|
||||
use app\admin\controller\Base;
|
||||
use OSS\Core\OssException;
|
||||
|
|
@ -10,12 +10,27 @@ use OSS\OssClient;
|
|||
use think\facade\Db;
|
||||
use think\facade\Filesystem;
|
||||
use think\facade\Request;
|
||||
|
||||
use Qcloud\Cos\Client;
|
||||
class Upload extends Base
|
||||
{
|
||||
private $secretId; // 腾讯云 API 密钥 SecretId
|
||||
private $secretKey; // 腾讯云 API 密钥 SecretKey
|
||||
private $bucket; // 存储桶名称
|
||||
private $region; // 存储桶所在地域
|
||||
private $domain; // 存储桶所在地域
|
||||
public function initialize()
|
||||
{
|
||||
$config = getConfig('uploads');
|
||||
$this->secretId = $config['AccessKeyId'];
|
||||
$this->secretKey = $config['AccessKeySecret'];
|
||||
$this->bucket = $config['Bucket'];
|
||||
$this->region = $config['Region'];
|
||||
$this->domain = $config['Domain'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 阿里云oss上传
|
||||
* 上传文件到腾讯云 COS
|
||||
*/
|
||||
public function picture()
|
||||
{
|
||||
|
|
@ -24,7 +39,85 @@ class Upload extends Base
|
|||
if (empty($files)) {
|
||||
return $this->renderError("请上传图片");
|
||||
}
|
||||
|
||||
|
||||
// 文件格式校验
|
||||
$ext = ['jpg', 'png', 'jpeg', 'JPG', 'PNG', 'JPEG', 'gif', 'apk', 'mp3'];
|
||||
$type = substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], '.') + 1);
|
||||
if (!in_array($type, $ext)) {
|
||||
return $this->renderError("文件格式错误");
|
||||
}
|
||||
|
||||
// 文件大小校验
|
||||
if ($_FILES['file']['size'] > 20971520) {
|
||||
return $this->renderError("上传文件不能超过20M");
|
||||
}
|
||||
|
||||
// 判断是否上传过
|
||||
$hash = $files->hash('sha1');
|
||||
$info = Db::name('picture')->where('token', $hash)->find();
|
||||
|
||||
if (false) {
|
||||
$data['path'] = imageUrl($info['imgurl']);
|
||||
$data['imgurl'] = $info['imgurl'];
|
||||
return $this->renderSuccess('上传成功', $data);
|
||||
} else {
|
||||
// 初始化腾讯云 COS 客户端
|
||||
$cosClient = new Client([
|
||||
'region' => $this->region,
|
||||
'schema' => 'https', // 协议
|
||||
'credentials' => [
|
||||
'secretId' => $this->secretId,
|
||||
'secretKey' => $this->secretKey,
|
||||
],
|
||||
]);
|
||||
|
||||
// 生成唯一文件名
|
||||
$date = date('Ymd');
|
||||
$uniqueFileName = md5(uniqid(rand(), true)) . '.' . $type;
|
||||
$cosKey = 'topic/' . $date . '/' . $uniqueFileName; // COS 中的文件路径
|
||||
|
||||
try {
|
||||
// 上传文件到腾讯云 COS
|
||||
$result = $cosClient->putObject([
|
||||
'Bucket' => $this->bucket,
|
||||
'Key' => $cosKey,
|
||||
'Body' => fopen($_FILES['file']['tmp_name'], 'rb'), // 文件内容
|
||||
]);
|
||||
|
||||
// 获取文件访问 URL
|
||||
$cosUrl = $result['Location'];
|
||||
$imgurl = $this->domain . $cosKey;
|
||||
// 新增数据到数据库
|
||||
$save_data['token'] = $hash;
|
||||
$save_data['imgurl'] = $imgurl; // 保存 COS 中的文件路径
|
||||
$save_data['addtime'] = time();
|
||||
$save_data['type'] = 1;
|
||||
$res = Db::name('picture')->insertGetId($save_data);
|
||||
if ($res) {
|
||||
$data['id'] = $res;
|
||||
$data['path'] = $imgurl; // 返回文件的完整访问 URL
|
||||
$data['imgurl'] = $imgurl ;
|
||||
return $this->renderSuccess('上传成功', $data);
|
||||
} else {
|
||||
return $this->renderError('上传失败');
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->renderError('文件上传失败:' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*/
|
||||
public function picture_file()
|
||||
{
|
||||
// 获取表单上传文件
|
||||
$files = request()->file('file', '');
|
||||
if (empty($files)) {
|
||||
return $this->renderError("请上传图片");
|
||||
}
|
||||
|
||||
$ext = ['jpg', 'png', 'jpeg', 'JPG', 'PNG', 'JPEG', 'gif', 'apk', 'mp3'];
|
||||
$type = substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], '.') + 1);
|
||||
if (!in_array($type, $ext)) {
|
||||
|
|
@ -33,13 +126,13 @@ class Upload extends Base
|
|||
if ($_FILES['file']['size'] > 20971520) {
|
||||
return $this->renderError("上传文件不能超过20M");
|
||||
}
|
||||
|
||||
|
||||
// 判断是否上传过
|
||||
$hash = $files->hash('sha1');
|
||||
$info = Db::name('picture')->where('token', $hash)->find();
|
||||
|
||||
// if ($info) {
|
||||
if (false) {
|
||||
|
||||
if ($info) {
|
||||
// if (false) {
|
||||
$data['path'] = imageUrl($info['imgurl']);
|
||||
$data['imgurl'] = $info['imgurl'];
|
||||
return $this->renderSuccess('上传成功', $data);
|
||||
|
|
@ -52,12 +145,11 @@ class Upload extends Base
|
|||
mkdir($saveDir, 0777, true);
|
||||
}
|
||||
$savename = $saveDir . '/' . $uniqueFileName;
|
||||
|
||||
// 移动文件到目标目录
|
||||
if (move_uploaded_file($_FILES['file']['tmp_name'], $savename)) {
|
||||
$savename = str_replace('\\', '/', $savename);
|
||||
$savename = substr($savename, 1); // 去掉开头的 “.”
|
||||
|
||||
|
||||
// 新增数据
|
||||
$save_data['token'] = $hash;
|
||||
$save_data['imgurl'] = $savename;
|
||||
|
|
@ -76,7 +168,7 @@ class Upload extends Base
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 阿里云oss上传
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<div class="layui-input-block">
|
||||
<input type="radio" name="type" value="1" {if condition="$data['type'] eq 1"} checked{/if} lay-verify="required" title="本地存储" class="layui-input" lay-filter="ChoiceRadio">
|
||||
<input type="radio" name="type" value="2" {if condition="$data['type'] eq 2"} checked{/if} lay-verify="required" title="阿里云存储" class="layui-input" lay-filter="ChoiceRadio">
|
||||
<input type="radio" name="type" value="3" {if condition="$data['type'] eq 3"} checked{/if} lay-verify="required" title="腾讯云存储" class="layui-input" lay-filter="ChoiceRadio">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item xuan" {if condition="$data['type'] eq 1"} style="display:none;" {/if}>
|
||||
|
|
@ -27,6 +28,12 @@
|
|||
<input type="text" name="Bucket" value="{$data['Bucket']}" lay-verify="required" title="空间名称Bucket" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item xuan" {if condition="$data['type'] eq 1"} style="display:none;" {/if}>
|
||||
<label class="layui-form-label">地域 region</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="Region" value="{$data['Region']}" lay-verify="required" title="空间域名 Domain" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item xuan" {if condition="$data['type'] eq 1"} style="display:none;" {/if}>
|
||||
<label class="layui-form-label">AccessKeyId</label>
|
||||
<div class="layui-input-block">
|
||||
|
|
@ -40,9 +47,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item xuan" {if condition="$data['type'] eq 1"} style="display:none;" {/if}>
|
||||
<label class="layui-form-label">空间域名 Domain</label>
|
||||
<label class="layui-form-label">请求域名 Domain</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="{$data['url']}" lay-verify="required" title="空间域名 Domain" class="layui-input">
|
||||
<input type="text" name="Domain" value="{$data['Domain']}" lay-verify="required" title="空间域名 Domain" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="key" value="{$key}">
|
||||
|
|
@ -67,7 +74,7 @@
|
|||
var form = layui.form;
|
||||
//获取单选框选中的值
|
||||
form.on('radio(ChoiceRadio)', function(data){
|
||||
if(data.value==2){
|
||||
if(data.value==2||data.value==3){
|
||||
$('.xuan').css("display",'block');
|
||||
}else{
|
||||
$('.xuan').css("display",'none');
|
||||
|
|
|
|||
|
|
@ -86,18 +86,22 @@ if (!function_exists('imageUrl')) {
|
|||
if ($url == '') {
|
||||
return '';
|
||||
}
|
||||
$pre = request()->domain();
|
||||
|
||||
if (strpos($url, 'http') !== false) {
|
||||
$path = $url;
|
||||
}
|
||||
// else if (strpos($pre, '192.168') !== false) {#测试环境
|
||||
// $path = $pre . "ceshi/public/" . $url;
|
||||
// }
|
||||
else if ($url === '0') {
|
||||
$path = $pre;
|
||||
} else {
|
||||
$path = $pre . $url;
|
||||
else{
|
||||
$pre = request()->domain();
|
||||
if ($url === '0') {
|
||||
$path = $pre;
|
||||
} else {
|
||||
$path = $pre . $url;
|
||||
}
|
||||
}
|
||||
|
||||
$path = str_replace('\\', '/', $path);
|
||||
return $path;
|
||||
|
||||
|
|
@ -113,9 +117,9 @@ if (!function_exists('contentUrl')) {
|
|||
function contentUrl($content)
|
||||
{
|
||||
$url = request()->domain() . '/';
|
||||
if (strpos($url, '192.168') !== false) {#测试环境
|
||||
$url = $url . "ceshi/public/";
|
||||
}
|
||||
// if (strpos($url, '192.168') !== false) {#测试环境
|
||||
// $url = $url . "ceshi/public/";
|
||||
// }
|
||||
$pregRule = "/<[img|IMG].*?src=[\‘|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\‘|\"].*?[\/]?>/";
|
||||
$content = preg_replace($pregRule, '<img src="' . $url . '${1}" style="max-width:100%">', htmlspecialchars_decode($content));
|
||||
return $content;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@
|
|||
"topthink/think-view": "^1.0",
|
||||
"topthink/think-captcha": "^3.0",
|
||||
"endroid/qr-code": "^4.6",
|
||||
"phpoffice/phpspreadsheet": "^1.29"
|
||||
"phpoffice/phpspreadsheet": "^1.29",
|
||||
"qcloud/cos-sdk-v5": "^2.6"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/var-dumper": "^4.2",
|
||||
|
|
|
|||
883
composer.lock
generated
883
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "0b24efd4dd99cbb4227aa47b22059ba9",
|
||||
"content-hash": "810d3950b90680e91d2b03690286abf6",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
|
|
@ -352,6 +352,587 @@
|
|||
},
|
||||
"time": "2024-11-01T03:51:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/command",
|
||||
"version": "1.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/command.git",
|
||||
"reference": "888e74fc1d82a499c1fd6726248ed0bc0886395e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/command/zipball/888e74fc1d82a499c1fd6726248ed0bc0886395e",
|
||||
"reference": "888e74fc1d82a499c1fd6726248ed0bc0886395e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/guzzle": "^7.9.2",
|
||||
"guzzlehttp/promises": "^1.5.3 || ^2.0.3",
|
||||
"guzzlehttp/psr7": "^2.7.0",
|
||||
"php": "^7.2.5 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"phpunit/phpunit": "^8.5.19 || ^9.5.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Command\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Jeremy Lindblom",
|
||||
"email": "jeremeamia@gmail.com",
|
||||
"homepage": "https://github.com/jeremeamia"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
}
|
||||
],
|
||||
"description": "Provides the foundation for building command-based web service clients",
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/command/issues",
|
||||
"source": "https://github.com/guzzle/command/tree/1.3.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/command",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-04T09:56:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "7.9.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "d281ed313b989f213357e3be1a179f02196ac99b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
|
||||
"reference": "d281ed313b989f213357e3be1a179f02196ac99b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/promises": "^1.5.3 || ^2.0.3",
|
||||
"guzzlehttp/psr7": "^2.7.0",
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/http-client-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"ext-curl": "*",
|
||||
"guzzle/client-integration-tests": "3.0.2",
|
||||
"php-http/message-factory": "^1.1",
|
||||
"phpunit/phpunit": "^8.5.39 || ^9.6.20",
|
||||
"psr/log": "^1.1 || ^2.0 || ^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-curl": "Required for CURL handler support",
|
||||
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
|
||||
"psr/log": "Required for using the Log middleware"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Jeremy Lindblom",
|
||||
"email": "jeremeamia@gmail.com",
|
||||
"homepage": "https://github.com/jeremeamia"
|
||||
},
|
||||
{
|
||||
"name": "George Mponos",
|
||||
"email": "gmponos@gmail.com",
|
||||
"homepage": "https://github.com/gmponos"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com",
|
||||
"homepage": "https://github.com/sagikazarmark"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Schultze",
|
||||
"email": "webmaster@tubo-world.de",
|
||||
"homepage": "https://github.com/Tobion"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle is a PHP HTTP client library",
|
||||
"keywords": [
|
||||
"client",
|
||||
"curl",
|
||||
"framework",
|
||||
"http",
|
||||
"http client",
|
||||
"psr-18",
|
||||
"psr-7",
|
||||
"rest",
|
||||
"web service"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/guzzle/issues",
|
||||
"source": "https://github.com/guzzle/guzzle/tree/7.9.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-24T11:22:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle-services",
|
||||
"version": "1.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle-services.git",
|
||||
"reference": "45bfeb80d5ed072bb39e9f6ed1ec5d650edae961"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/45bfeb80d5ed072bb39e9f6ed1ec5d650edae961",
|
||||
"reference": "45bfeb80d5ed072bb39e9f6ed1ec5d650edae961",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/command": "^1.3.2",
|
||||
"guzzlehttp/guzzle": "^7.9.2",
|
||||
"guzzlehttp/psr7": "^2.7.0",
|
||||
"guzzlehttp/uri-template": "^1.0.4",
|
||||
"php": "^7.2.5 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"phpunit/phpunit": "^8.5.19 || ^9.5.8"
|
||||
},
|
||||
"suggest": {
|
||||
"gimler/guzzle-description-loader": "^0.0.4"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Command\\Guzzle\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Stefano Kowalke",
|
||||
"email": "blueduck@mail.org",
|
||||
"homepage": "https://github.com/Konafets"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
}
|
||||
],
|
||||
"description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.",
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/guzzle-services/issues",
|
||||
"source": "https://github.com/guzzle/guzzle-services/tree/1.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle-services",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-04T09:59:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
"version": "2.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/promises.git",
|
||||
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
|
||||
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2.5 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Promise\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Schultze",
|
||||
"email": "webmaster@tubo-world.de",
|
||||
"homepage": "https://github.com/Tobion"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle promises library",
|
||||
"keywords": [
|
||||
"promise"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/promises/issues",
|
||||
"source": "https://github.com/guzzle/promises/tree/2.0.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-10-17T10:06:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "2.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
|
||||
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"psr/http-factory": "^1.0",
|
||||
"psr/http-message": "^1.1 || ^2.0",
|
||||
"ralouphie/getallheaders": "^3.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/http-factory-implementation": "1.0",
|
||||
"psr/http-message-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"http-interop/http-factory-tests": "0.9.0",
|
||||
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||
},
|
||||
"suggest": {
|
||||
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Psr7\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "George Mponos",
|
||||
"email": "gmponos@gmail.com",
|
||||
"homepage": "https://github.com/gmponos"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com",
|
||||
"homepage": "https://github.com/sagikazarmark"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Schultze",
|
||||
"email": "webmaster@tubo-world.de",
|
||||
"homepage": "https://github.com/Tobion"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com",
|
||||
"homepage": "https://sagikazarmark.hu"
|
||||
}
|
||||
],
|
||||
"description": "PSR-7 message implementation that also provides common utility methods",
|
||||
"keywords": [
|
||||
"http",
|
||||
"message",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response",
|
||||
"stream",
|
||||
"uri",
|
||||
"url"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/psr7/issues",
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.7.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-18T11:15:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/uri-template",
|
||||
"version": "v1.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/uri-template.git",
|
||||
"reference": "30e286560c137526eccd4ce21b2de477ab0676d2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2",
|
||||
"reference": "30e286560c137526eccd4ce21b2de477ab0676d2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"symfony/polyfill-php80": "^1.24"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"phpunit/phpunit": "^8.5.36 || ^9.6.15",
|
||||
"uri-template/tests": "1.0.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\UriTemplate\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "George Mponos",
|
||||
"email": "gmponos@gmail.com",
|
||||
"homepage": "https://github.com/gmponos"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Nyholm",
|
||||
"email": "tobias.nyholm@gmail.com",
|
||||
"homepage": "https://github.com/Nyholm"
|
||||
}
|
||||
],
|
||||
"description": "A polyfill class for uri_template of PHP",
|
||||
"keywords": [
|
||||
"guzzlehttp",
|
||||
"uri-template"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/uri-template/issues",
|
||||
"source": "https://github.com/guzzle/uri-template/tree/v1.0.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/GrahamCampbell",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/Nyholm",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-03T10:55:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maennchen/zipstream-php",
|
||||
"version": "2.2.6",
|
||||
|
|
@ -1020,6 +1601,186 @@
|
|||
],
|
||||
"time": "2017-10-23T01:57:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "qcloud/cos-sdk-v5",
|
||||
"version": "v2.6.16",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tencentyun/cos-php-sdk-v5.git",
|
||||
"reference": "22366f4b4f7f277e67aa72eea8d1e02a5f9943e2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/22366f4b4f7f277e67aa72eea8d1e02a5f9943e2",
|
||||
"reference": "22366f4b4f7f277e67aa72eea8d1e02a5f9943e2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"ext-json": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-simplexml": "*",
|
||||
"guzzlehttp/guzzle": "^6.2.1 || ^7.0",
|
||||
"guzzlehttp/guzzle-services": "^1.1",
|
||||
"guzzlehttp/psr7": "^1.3.1 || ^2.0",
|
||||
"php": ">=5.6"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.4-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/Common.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Qcloud\\Cos\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "yaozongyou",
|
||||
"email": "yaozongyou@vip.qq.com"
|
||||
},
|
||||
{
|
||||
"name": "lewzylu",
|
||||
"email": "327874225@qq.com"
|
||||
},
|
||||
{
|
||||
"name": "tuunalai",
|
||||
"email": "550566181@qq.com"
|
||||
}
|
||||
],
|
||||
"description": "PHP SDK for QCloud COS",
|
||||
"keywords": [
|
||||
"cos",
|
||||
"php",
|
||||
"qcloud"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/tencentyun/cos-php-sdk-v5/issues",
|
||||
"source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.16"
|
||||
},
|
||||
"time": "2025-01-21T12:49:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
"version": "3.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"phpunit/phpunit": "^5 || ^6.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/getallheaders.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ralph Khattar",
|
||||
"email": "ralph.khattar@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A polyfill for getallheaders.",
|
||||
"support": {
|
||||
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
||||
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
||||
},
|
||||
"time": "2019-03-08T08:55:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v2.5.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "605389f2a7e5625f273b53960dc46aeaf9c62918"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918",
|
||||
"reference": "605389f2a7e5625f273b53960dc46aeaf9c62918",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"function.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "A generic function and convention to trigger deprecation notices",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-25T14:11:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.31.0",
|
||||
|
|
@ -1077,6 +1838,63 @@
|
|||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.31.0",
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://mirrors.tencent.com/repository/composer/symfony/polyfill-php80/v1.31.0/symfony-polyfill-php80-v1.31.0.zip",
|
||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php80\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ion Bazan",
|
||||
"email": "ion.bazan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "topthink/framework",
|
||||
"version": "v6.1.5",
|
||||
|
|
@ -1400,63 +2218,6 @@
|
|||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.31.0",
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://mirrors.tencent.com/repository/composer/symfony/polyfill-php80/v1.31.0/symfony-polyfill-php80-v1.31.0.zip",
|
||||
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php80\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ion Bazan",
|
||||
"email": "ion.bazan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v4.4.47",
|
||||
|
|
@ -1567,12 +2328,12 @@
|
|||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {},
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=7.1.0"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.0.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -203,6 +203,10 @@ return [
|
|||
'url' => '/admin/weixinpay',
|
||||
'name' => '微信支付',
|
||||
],
|
||||
[
|
||||
'url' => '/admin/uploadsFile',
|
||||
'name' => '图片设置',
|
||||
],
|
||||
[
|
||||
'url' => '/admin/wechatofficialaccount',
|
||||
'name' => '微信公众号',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user