From 67512317aa9550c73d4d513664f4d36a01d41320 Mon Sep 17 00:00:00 2001 From: Ali Najmabadi Date: Thu, 11 Jan 2024 13:18:47 +0330 Subject: [PATCH] update laravel/object-storage docs --- pages/app-deploy/laravel/object-storage.js | 300 ++++++++++++++------- 1 file changed, 199 insertions(+), 101 deletions(-) diff --git a/pages/app-deploy/laravel/object-storage.js b/pages/app-deploy/laravel/object-storage.js index ee67f073..5c4a6026 100644 --- a/pages/app-deploy/laravel/object-storage.js +++ b/pages/app-deploy/laravel/object-storage.js @@ -49,23 +49,6 @@ export default () => (
  • نحوه استفاده
  • -
  • - بازیابی فایل‌ها توسط Amazon S3 Driver -
  • -
  • - دانلود فایل‌ توسط Amazon S3 Driver -
  • -
  • - - دریافت لیست فایل‌‌های آپلود شده توسط Amazon S3 Driver - -
  • -
  • - حذف فایل توسط Amazon S3 Driver -
  • -
  • - آپلود فایل توسط Amazon S3 Driver -
  • @@ -163,101 +146,216 @@ DEFAULT_REGION=us-east-1`}

    نحوه استفاده

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

    - می‌توان گفت که تغییر خاصی در نحوه‌ی استفاده‌ی شما به‌وجود نخواهد آمد. برای - مثال شما می‌توانید با استفاده از قطعه کد زیر، محتوای{" "} - Contents را در فایلی با نام{" "} - example.txt قرار داده و آن را در فضای - ذخیره‌سازی ابری خود ذخیره کنید: + در پروژه خود می‌توانید یک کنترلر به نام{" "} + S3Controller.php در مسیر + app/Http/Controllers ایجاد کنید. بعد از + ایجاد فایل مذکور، کافیست تا محتوای آن را به شکل زیر بنویسید:

    - - {`use Illuminate\\Support\\Facades\\Storage; - -Storage::disk('liara')->put('example.txt', 'Contents');`} - - -

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

    -

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

    -
    - - - {`use Illuminate\\Support\\Facades\\Storage; + + {`validate([ + 'upload_file' => 'required|max:2048', // Adjust the file size validation as needed + ]); + + $file = $request->file('upload_file'); + $fileName = $file->getClientOriginalName(); + + Storage::disk('liara')->put($fileName, file_get_contents($file)); + + return redirect()->route('user.interface')->with('success', 'File uploaded successfully'); + } + + public function showObjects() + { + $objects = Storage::disk('liara')->allFiles(''); + + $files = []; + foreach ($objects as $object) { + $files[] = [ + 'name' => $object, + 'download_link' => Storage::disk('liara')->temporaryUrl($object, now()->addMinutes(5)), + ]; + } + + return view('userinterface', ['files' => $files]); + } + + + public function downloadFile(Request $request) + { + $fileName = $request->input('download_file'); + return Storage::disk('liara')->download($fileName); + } + + public function deleteFile(Request $request) + { + $fileName = $request->input('delete_file'); + Storage::disk('liara')->delete($fileName); + + return redirect()->route('user.interface')->with('success', 'File deleted successfully'); + } +} +`}

    - اگر فایلی دارید که محتوای آن JSON باشد ، می‌توانید با متد{" "} - json آن‌ها را بازیابی کنید: + اکنون، می‌بایست یک فایل به نام{" "} + userinterface.blade.php در مسیر{" "} + resources/views/ + ایجاد کنید و قطعه کد زیر را درون آن قرار دهید:

    - - {`use Illuminate\\Support\\Facades\\Storage; -$orders = Storage::json('orders.json');`} + + {` + + + + + + + S3 Controller User Interface + + + + + +

    S3 Controller User Interface

    + + @if(session('success')) +
    {{ session('success') }}
    + @endif + +
    + @csrf + + + @error('upload_file') +
    {{ $message }}
    + @enderror +
    + +
    + @csrf + +
    + + @if(isset($files) && count($files) > 0) +
      + @foreach($files as $file) +
    • + {{ $file['name'] }} +
      +
      + @csrf + + +
      +
      + @csrf + + +
      +
      +
    • + @endforeach +
    + @endif + + +`}
    - -

    دانلود فایل‌ توسط 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

    -

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

    - - {`file('avatar')); - - return $path; - } -}`} +

    + پس از این کار، کافیست تا قطعه کد زیر را در فایل{" "} + web.php در مسیر{" "} + routes وارد کنید: +

    + + {`use App\Http\Controllers\S3Controller; + +Route::get('/userinterface', function () { + return view('userinterface'); +}); + +Route::get('/userinterface', [S3Controller::class, 'showUserInterface'])->name('user.interface'); +Route::post('/upload-file', [S3Controller::class, 'uploadFile'])->name('upload.file'); +Route::post('/show-objects', [S3Controller::class, 'showObjects'])->name('show.objects'); +Route::post('/retrieve-file', [S3Controller::class, 'retrieveFile'])->name('retrieve.file'); +Route::post('/delete-file', [S3Controller::class, 'deleteFile'])->name('delete.file'); +Route::post('/download-file', [S3Controller::class, 'downloadFile'])->name('download.file'); +`} +

    + تمامی کارها انجام شده است و اگر متغیرهای محیطی را به درستی تنظیم + کرده‌باشید؛ می‌توانید پس از اجرای برنامه، در مسیر{" "} + /userinterface از فضای ذخیره‌سازی ابری لیارا + استفاده کنید؛ با استفاده از قطعه کدهای فوق، شما می‌توانید فایل‌های + مدنظرتان را در فضای ذخیره‌سازی ابری لیارا آپلود کنید، دانلود کنید، حذف + کنید و یا یک لیست از آن‌ها داشته باشید. بدیهی است که برای تغییر قابلیت‌ها + و موارد استفاده، می‌توانید کدهای بالا را شخصی‌سازی کنید. +