Laravel 使用阿里云OSS S3 协议文件上传
1. 安装 S3 软件包
composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies
2. 配置.env
以阿里云 OSS 地域华东2 上海
为例:
FILESYSTEM_DISK=s3 //设置默认上传到S3AWS_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. 文件上传控制器的内容
<?phpnamespace 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. 添加上传路由代码
//上传用户头像
Route::post('/upload/avatar', [UploadController::class, 'avatar']);