laravel

پلتفرم Laravel

(Laravel Platform)

اتصال به ذخیره‌سازی ابری

بدون شک اتصال برنامه به یک ذخیره‌سازی ابری مطمئن برای نگهداری و ارائه فایل‌های استاتیک وب‌سایت یا داده‌های آپلود شده توسط کاربران، باعث اطمینان خاطر صاحبان کسب و کار و بهبود عملکرد برنامه‌ می‌شود.

فهرست عناوین:

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

نصب Amazon S3 Driver

ذخیره‌سازی ابری لیارا یک Object Storage است که ساختار آن توسط کمپانی آمازون طراحی شده و S3 نام دارد بنابراین در برنامه‌ی Laravel خود به یک Driver برای ارتباط با ذخیره‌سازی ابری نیاز خواهید داشت که با اجرای دستور زیر نصب خواهد شد:

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

تنظیم کلیدها

اگر باکت شما خصوصی باشد، برای دسترسی به باکت، نیاز به کلید دسترسی دارید. برای ساخت کلید، به صفحه ذخیره‌سازی ابری بروید و طبق عکس‌ها کلید خود را بسازید.

به قسمت کلیدها رفته:

یک کلید جدید بسازید.

کلید های ساخته شده را کپی کنید. توجه داشته باشید که SECRET_KEY تنها یک بار نمایش داده می‌شود و پس از آن باید کلید را درجایی مطمئن ذخیره کنید.

پیکربندی FileSystem

در مرحله‌ی بعد باید یک FileSystem Driver جدید را به فایل پیکربندی مربوطه در مسیر config/filesystems.php اضافه کنید:

'liara' => [
    'driver' => 's3',
    'endpoint' => env('ENDPOINT_URL'),
    'key' => env('ACCESS_KEY'),
    'secret' => env('SECRET_KEY'),
    'region' => env('DEFAULT_REGION'),
    'bucket' => env('BUCKET_NAME'),
],

تنظیم مشخصات ذخیره‌سازی ابری

در لوکال

درنهایت باید متغیرهای تنظیم شده در فایل config/filesystems.php را به‌منظور امنیت و کنترل راحت‌تر مقادیر، در فایل .env مقدار دهی کنید:

ENDPOINT_URL=https://storage.iran.liara.space
ACCESS_KEY=<Access Key>
SECRET_KEY=<Secret Key>
BUCKET_NAME=<Bucket Name>
DEFAULT_REGION=us-east-1

در لیارا

برای تنظیم مشخصات ذخیره‌سازی ابری در برنامه‌ی Laravel خود باید وارد تنظیمات برنامه شده و در بخش متغیرها با کلیک کردن بر روی دکمه‌ی افزودن متغیر، مشخصات ذخیره‌سازی ابری را وارد کنید.

توجه داشته باشید که فایل .env پروژه‌ی لوکال شما بر روی برنامه‌ی تهیه شده مستقر نخواهد شد.

نحوه استفاده

توجه داشته باشید همه مسیر‌های فایل، باید نسبت به روت باکت مشخص شوند.

می‌توان گفت که تغییر خاصی در نحوه‌ی استفاده‌ی شما به‌وجود نخواهد آمد. برای مثال شما می‌توانید با استفاده از قطعه کد زیر، محتوای Contents را در فایلی با نام example.txt قرار داده و آن را در فضای ذخیره‌سازی ابری خود ذخیره کنید:

use Illuminate\Support\Facades\Storage;

Storage::disk('liara')->put('example.txt', 'Contents');

بازیابی فایل‌ها توسط Amazon S3 Driver

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


use Illuminate\Support\Facades\Storage;

$contents = Storage::get('file.jpg');

اگر فایلی دارید که محتوای آن JSON باشد ، می‌توانید با متد json آن‌ها را بازیابی کنید:

use Illuminate\Support\Facades\Storage;

$orders = Storage::json('orders.json');

دانلود فایل‌ توسط Amazon S3 Driver

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

use Illuminate\Support\Facades\Storage;

return Storage::download('file.jpg');

دریافت لیست فایل‌‌های آپلود شده توسط Amazon S3 Driver

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

use Illuminate\Support\Facades\Storage;

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

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

حذف فایل توسط Amazon S3 Driver

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

use Illuminate\Support\Facades\Storage;

Storage::disk('liara')->delete('path/file.jpg');

// Or you can use:
Storage::delete('file.jpg');

Storage::delete(['file.jpg', 'file2.jpg']);

آپلود فایل توسط Amazon S3 Driver

نمونه کد برای آپلود فایل:

<?php

namespace App\Http\Controllers;
  
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;
use Illuminate\HttpRequest;
  
class UserAvatarController extends Controller
  {
      /**
      * Update the avatar for the user.
      */
      public function update(Request $request): string
      {
        $path = Storage::putFile('avatars', $request->file('avatar'));
  
          return $path;
      }
}

شما می‌توانید برای کسب اطلاعات بیشتر، مثال‌ها و مستندات این پکیج را مطالعه کنید.


متوجه شدم، برو گام بعدی!
;