thinkphp三步整合文件上传系列-华为云obs文件上传
thinkphp6 华为云 filesystem
基于 dscmall/laravel-filesystem-obs 轻度封装tp
安装
composer require death_satan/thinkphp-huawei-obs
初始化
修改配置 config/filesystem.php 文件
<?php
return [
// 默认磁盘
'default' => env('filesystem.driver', 'local'),
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRuntimePath() . 'storage',
],
'public' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/storage',
// 磁盘路径对应的外部URL路径
'url' => '/storage',
// 可见性
'visibility' => 'public',
],
//新增一个磁盘
'huawei'=>[
'type' => 'Huawei',//设置驱动
'key' => env('OBS_ACCESS_ID'), // <Your Huawei OBS AccessKeyId>
'secret' => env('OBS_ACCESS_KEY'), // <Your Huawei OBS AccessKeySecret>
'bucket' => env('OBS_BUCKET'), // <OBS bucket name>
'endpoint' => env('OBS_ENDPOINT'), // <the endpoint of OBS, E.g: (https:// or http://).obs.cn-east-2.myhuaweicloud.com | custom domain, E.g:img.abc.com> OBS 外网节点或自定义外部域名
'cdn_domain' => env('OBS_CDN_DOMAIN'), //<CDN domain, cdn域名> 如果isCName为true, getUrl会判断cdnDomain是否设定来决定返回的url,如果cdnDomain未设置,则使用endpoint来生成url,否则使用cdn
'ssl_verify' => env('OBS_SSL_VERIFY'), // <true|false> true to use 'https://' and false to use 'http://'. default is false,
'debug' => env('APP_DEBUG'), // <true|false>
'prefix'=>'',//prefix
]
// 更多的磁盘配置信息
],
];
使用方法
通过filesystem使用
//通过门面使用
think\facade\Filesystem::disk('huawei')
//在控制器中通过注入使用
class TestControl{
public function Test(\think\Filesystem $filesystem)
{
$aliyun = $filesystem->disk('huawei');
}
}
文件上传
<?php
namespace app\controller;
use app\BaseController;
use app\Request;
use think\facade\Filesystem;
class Index extends BaseController
{
public function index(Request $request)
{
//获取上传文件
$file = $request->file('image');
//通过filesystem进行上传
$url = Filesystem::disk('huawei')->putFile('images', $file);
if (!$url) new \exception('上传失败');
dd('上传成功,文件位置:' . $url);
}
}
世人慌慌张张,不过图碎银几两
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)