File Manager
FileManager سیستم مدیریت فایل در Doravel است که امکان آپلود، پردازش و مدیریت فایلها را با پشتیبانی از درایورهای مختلف (local و S3 و SFTP) فراهم میکند.
مقدمه
مدیریت فایل (File Manager) برای سهولت بیشتر در استفاده، دسترسی آسانتر، قابلیتهای بیشتر و رعایت ساختار مشخص طراحی شده است.
این سرویس قابلیتهای زیر را ارائه میدهد:
- آپلود فایلها
- دریافت اطلاعات فایلها
- دریافت لینک فایلها
- بررسی وجود فایلها
- حذف فایلها
- حذف موقت و بازگردانی فایلها
این عملیات ها در دو Disk Driver در حالت های LOCAL و DATABASE پشتیبانی میشوند.
برای سهولت استفاده، این سرویس با Facade ارائه شده است:
Dornica\Foundation\FileManager\Facade\FileManager
FileManager یک سرویس قدرتمند برای مدیریت فایلها در Doravel است که به شما امکان میدهد:
- آپلود فایلها با درایورهای مختلف
- تعیین دیسک و درایور مورد نظر
- اتصال فایلها به موجودیتهای مختلف (Entity)
- اعتبارسنجی فایلها قبل از آپلود
- پردازش و مدیریت فایلها
درایورها
کلید default_disk_driver در تنظیمات (dornica-app.file_manager) اضافه شده است که مقادیر database و local را میپذیرد.
درایور Local
در این روش اطلاعات دیسک ها از دیسک های ثبت شده در لاراول در فایل filesystems.php خوانده میشود. در صورت عدم انتخاب دیسک، دیسک پیشفرض لاراول انتخاب میشود.
درایور Database
در این روش اطلاعات دیسک ها از دیتابیس جدول file_disks خوانده میشود و دیسک به صورت موقت در لاراول ساخته میشود تا عملیات آپلود و مدیریت فایلها انجام شود. در صورت عدم انتخاب دیسک، دیسک اولویت بالاتر انتخاب میشود.
جدول file_disks شامل فیلدهای زیر است:
| فیلد | نوع | توضیح |
|---|---|---|
id | integer | شناسه یکتا |
title | string | عنوان دیسک |
name | string | نام دیسک (برای استفاده در کد) |
hostname | string | آدرس hostname |
port | integer | پورت اتصال |
driver | integer | نوع درایور (local یا sftp یا s3) |
base_path | string | مسیر پایه |
priority | integer | اولویت دیسک |
auth_type | integer | نوع احراز هویت (no auth یا basic یا ssh key based) |
auth_fields | json | فیلدهای احراز هویت (مثال: username و password و private_key و passphrase) |
options | json | گزینههای اضافی |
started_at | datetime | زمان شروع استفاده از دیسک |
expired_at | datetime | زمان پایان استفاده از دیسک |
is_expired | boolean | منقضی شدن دیسک |
is_active | boolean | فعال بودن دیسک |
description | string | توضیحات اضافی |
در صورت عدم مشخص کردن دیسک در هنگام آپلود، دیسک با اولویت بالاتر انتخاب میشود (عدد کمتر اولویت بالاتر است).
مدلها
در FileManager مدل (Model) هایی وجود دارد که هرکدام مسئولیت نگهداری اطلاعات بخش خاصی از سیستم مدیریت فایل را دارند.
این مدلها در فایل کانفیگ dornica-app.php قابل مقداردهی و جایگزینی با مدل جدید خودتان هم هستند.
'models' => [
'file' => \Dornica\Foundation\FileManager\Models\File::class,
'file_disk' => \Dornica\Foundation\FileManager\Models\FileDisk::class,
'file_type' => \Dornica\Foundation\FileManager\Models\FileType::class,
],
در ادامه، ویژگیها، کاربرد و فیلدهای هریک را معرفی میکنیم:
File مدل فایل
این مدل، اطلاعات مربوط به هر فایل آپلود شده (اعم از عکس، سند، ویدیو و ...) را در بانک اطلاعاتی نگه میدارد.
ویژگیهای مهم:
id: کلید یکتا برای هر فایلname: نام اصلی فایل در سیستمuploader_type,uploader_id: اطلاعات مدل و کاربر آپلودکنندهfile_type_id: شناسه نوع فایل (مثلاً قرارداد، کارت ملی و ...)file_disk_id: شناسه دیسک نگهدارنده فایل (در صورتی که دیسک درایور database باشد)file_disk_name: نام دیسک (درصورتی که دیسک درایور local باشد)mime_type: نوع mime (مثلاً image/png)extension: پسوند فایلsize: حجم فایل (بایت)path: مسیر نگهداری فایلfull_month: ماه میلادی آپلودoriginal_name: نام اصلی فایل آپلود شدهis_private: خصوصی بودن فایلis_deleted,deleted_at,deleted_by: اطلاعات حذف شدنcreated_at,updated_at: تاریخهای ثبت و ویرایش
FileDisk مدل دیسک فایل ها
مشخصات تمام دیسکها و سرور های ذخیرهسازی (local, sftp, s3 و...) در این مدل ذخیره میشود.
ویژگیهای مهم:
id: کلید یکتاtitle: عنوان خواناname: نام لاتین یکتا برای دسترسی برنامهhostname,port: اطلاعات اتصالdriver: نوع درایور (local،s3،sftpو ...)base_path: مسیر پایه فایلهاpriority: اولویت نمایش/استفادهauth_type: روش یا نوع احرازهویتauth_fields: اطلاعات احراز هویت مورد نیاز (username، password یا کلید SSH و غیره)options: گزینهها تکمیلی دیسکdescription: توضیحات تکمیلیstarted_at,expired_at,is_expired: زمان و انقضا- سایر فیلدهای مدیریت و حذف منطقی
FileType مدل انواع فایل
اطلاعات نوع فایل (مثلاً کارت ملی، تصویر پرسنلی، قرارداد و ...) را نگهداری میکند و قواعد و محدودیتهای مربوط به نوع فایل مانند حجم، پسوند و الزامی بودن را دارد.
ویژگیهای مهم:
id: کلید یکتاname: نام قابلنمایشcode: کد یکتاtype: نوع فایلgender: جنسیتمحور بودن یا نبودن (در صورت نیاز)max_size: بیشینه حجم مجازallowed_extensions: پسوندهای مجازis_required,is_private,is_active: قوانین و وضعیت- سایر فیلدهای مدیریتی و حذف
برای ستون type باید یک Enum با کپی کردن از Enum موجود در زیرساخت در پروژه ایجاد کنید و انواع فایلهای خود را اضافه و با استفاده از این فیلد اقدام به دریافت انواع کنید.
برای ترجمهی برچسب این Enum، بخش ترجمهی نوع کاربرد فایل را ببینید.