thinkphp简单三步整合系列-阿里云oss文件上传

时间:2024-02-17 20:38:10

thinkphp6 阿里云oss

基于 xxtime/flysystem-aliyun-oss 轻度封装tp

安装


composer require death_satan/thinkphp-aliyun-oss

初始化

修改配置 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\',
        ],
        //新增一个阿里云磁盘
        \'aliyun\'=>[
            \'type\'=>\'Aliyun\',//驱动使用阿里云
            \'accessId\'       => \'<aliyun access id>\',
            \'accessSecret\'   => \'<aliyun access secret>\',
            \'bucket\'         => \'<bucket name>\',
            \'endpoint\'       => \'<endpoint address>\',
            // \'timeout\'        => 3600,
            // \'connectTimeout\' => 10,
            // \'isCName\'        => false,
            // \'token\'          => \'\',
        ]
        // 更多的磁盘配置信息
    ],
];


使用方法

通过filesystem使用


//通过门面使用
think\facade\Filesystem::disk(\'aliyun\')
//在控制器中通过注入使用
class TestControl{

    public function Test(\think\Filesystem $filesystem)
    {
        $aliyun = $filesystem->disk(\'aliyun\');
    }
}

文件上传

<?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(\'aliyun\')->putFile(\'images\', $file);
        if (!$url) new \exception(\'上传失败\');

        dd(\'上传成功,文件位置:\' . $url);
    }
}