پرش به مطلب اصلی

اتصال Laravel به فایل S3


در این بخش می خواهیم آموزش نحوه اتصال به فایل S3 را در هاست لاراول laravel به شما آموزش دهیم.

برای متصل کردن لاراول به سرویس فایل S3 باید یکسری تغییرات در پروژه خود اعمال کنید که این تغییرات در این صفحه قدم به قدم خدمت شما شرح داده خواهد شد.

نصب Amazon S3 Driver

برای استفاده از سرویس فایل S3 باید ابتدا با استفاده از دستور زیر کتابخانه مربوط به این سرویس را در پروژه خود نصب کنید.

composer require league/flysystem-aws-s3-v3 "^3.0"

پیکربندی FileSystem

بعد از نصب کتابخانه باید یک FileSystem Driver جدید در فایل config/filesystems.php ایجاد کنید:

'cloud' => env('FILESYSTEM_CLOUD'),
'minio' => [
'driver' => 's3',
'endpoint' => env('ENDPOINT_URL'),
'use_path_style_endpoint' => true,
'key' => env('ACCESS_KEY'),
'secret' => env('SECRET_KEY'),
'region' => env('DEFAULT_REGION'),
'bucket' => env('BUCKET_NAME'),
],

تنظیم مشخصات سرویس فایل

حالا که FileSystem ایجاد شد باید مشخصات سرویس فایل S3 خود را با استفاده از env ها به لاراول معرفی کنید. که برای اینکار می توانید از فایل .env یا قسمت متغیر های محیطی چابکان استفاده کنید.

# name = value
FILESYSTEM_CLOUD = minio
ENDPOINT_URL = https://minio-url
ACCESS_KEY = <Access Key>
SECRET_KEY = <Secret Key>
DEFAULT_REGION = us-east-1
BUCKET_NAME = <Name of you're bucket>

نحوه‌ی استفاده

اگر تمام مراحل را به درستی انجام داده باشید، تنظیمات سرویس فایل S3 به صورت کامل انجام شده است و می توانید به صورت زیر از آن استفاده کنید:

Storage::disk('minio')->put('sample.txt', 'Contents');

آپلود فایل

برای آپلود فایل، میتوانید از نمونه کد زیر استفاده نمایید:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;
use Illuminate\HttpRequest;

class UserAvatarController extends Controller
{
public function update(Request $request): string
{
$path = Storage::putFile('pictures', $request->file('picture'));

return $path;
}
}

حذف فایل‌‌های آپلود شده

برای حذف فایل‌‌های آپلود شده، میتوانید از نمونه کد زیر استفاده نمایید:

use Illuminate\Support\Facades\Storage;

Storage::disk('minio')->delete('folder/text.txt');

دانلود فایل‌

برای دانلود فایل میتوانید از نمونه کد زیر استفاده نمایید:

use Illuminate\Support\Facades\Storage;

return Storage::download('text.txt');

بازیابی فایل‌ها

برای بازیابی فایل ها میتوانید از نمونه کد زیر استفاده نمایید:

use Illuminate\Support\Facades\Storage;

$contents = Storage::get('text.txt');

دریافت لیست فایل‌‌های آپلود شده

برای دریافت لیست فایل‌‌های آپلود شده، میتوانید از نمونه کد زیر استفاده نمایید:

use Illuminate\Support\Facades\Storage;

$files = Storage::allFiles($directory);