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']);