Laravel 使用阿里云OSS S3 协议文件上传

1. 安装 S3 软件包

复制代码
composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies

2. 配置.env

以阿里云 OSS 地域华东2 上海为例:

php 复制代码
FILESYSTEM_DISK=s3                                                      //设置默认上传到S3

AWS_ACCESS_KEY_ID=****************************                // 阿里云 AccessKey ID
AWS_SECRET_ACCESS_KEY=********************************   // 阿里云 AccessKey Secret
AWS_DEFAULT_REGION=cn-shanghai                              //区域
AWS_BUCKET=file-upload-s3                                         //存储空间名称
AWS_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com  //阿里云 OSS 端点
AWS_USE_PATH_STYLE_ENDPOINT=false                        //阿里云使用虚拟主机模式(必须设为 false)
AWS_URL=                                                                   // 可选:自定义访问域名(如 CDN 域名)

3. 创建上传文件的控制器

复制代码
php artisan make:controller UploadController

4. 文件上传控制器的内容

php 复制代码
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UploadController extends Controller
{
    public function avatar(Request $request)
    {
        //返回阿里云相对文件路径
        $path = $request->file('avatar')->store('avatars');

        return [
          'message' => '上传成功',
          'code' => 200,
          'data' => ['url' => $path],
          'success' => true,
        ];
    }
}

5. 添加上传路由代码

php 复制代码
//上传用户头像
Route::post('/upload/avatar', [UploadController::class, 'avatar']);

6. 使用apifox测试

7. 登录阿里云后台OSS确认

相关推荐
ServBay18 小时前
告别面条代码,PSL 5.0 重构 PHP 性能与安全天花板
后端·php
多厘2 天前
别再手写 psr-4 了!用 Composer 隐藏魔法干掉上千行烂配置
laravel
JaguarJack3 天前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo3 天前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack4 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo4 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack5 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay6 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954486 天前
CTF 伪协议
php
BingoGo8 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php