مهدی
4 سال پیش توسط مهدی مطرح شد
2 پاسخ

ایجاد محدودیت حجم upload برای هر کاربر با unisharp

با سلام. من میخواستم برای هر کاربر عادی حجم آپلود رو در unisharp محدود کنم به مثلا 50MB و بعضی از کاربرا مثلا با تهیه اشتراک بتونن بیشتر آپلود کنند.در فایل confing فایل منیجر فقط میشد یه محدودیت کلی گذاشت و این مورد قابل پیاده سازی نبود.ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
مهدی
تخصص : برنامه نویس
@mahdiam200 3 سال پیش مطرح شد
0

با تشکر از آقای شیری نژاد برای پاسخشون . با استفاده از روش زیر تونستم مشکلم حل کنم:
در ابتدا با استفاده از تابع زیر میشه حجم هر دایرکتوری رو به دست آورد

    function folderSize ($dir)
    {
        $size = 0;

        foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {
            $size += is_file($each) ? filesize($each) : $this->folderSize($each);
        }

        return $size;
    }

برای اعمال محدودیت حجم برای هر شخص کافیه که به مسیر زیر در Vendor که پکیج اونجا نصب شده رفت

Unisharp/laravel-filemanager/src

و در فایل LfmPath.php علاوه بر اضاف کردن متد folderSize در متد uploadValidator نیز کدهای زیر اضاف کرد

      $photo_path = "storage/photos/".auth()->user()->id;   
        $file_path = "storage/files/".auth()->user()->id;
        $directory_size =  $this->folderSize($photo_path) + $this->folderSize($file_path);

            if ($directory_size > 30000) {
                return $this->error('file-size', ['max' => 30000]);
            }

حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
0

سلام با unisharp آشنایی ندارم ولی هنگام آپلود فایل در اعتبار سنجی میتونی نوع کاربر رو دریافت کنی و متناسب با او کاربر حجم دلخواه آپلودو بهش بدی.


مهدی
تخصص : برنامه نویس
@mahdiam200 3 سال پیش مطرح شد
0

با تشکر از آقای شیری نژاد برای پاسخشون . با استفاده از روش زیر تونستم مشکلم حل کنم:
در ابتدا با استفاده از تابع زیر میشه حجم هر دایرکتوری رو به دست آورد

    function folderSize ($dir)
    {
        $size = 0;

        foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {
            $size += is_file($each) ? filesize($each) : $this->folderSize($each);
        }

        return $size;
    }

برای اعمال محدودیت حجم برای هر شخص کافیه که به مسیر زیر در Vendor که پکیج اونجا نصب شده رفت

Unisharp/laravel-filemanager/src

و در فایل LfmPath.php علاوه بر اضاف کردن متد folderSize در متد uploadValidator نیز کدهای زیر اضاف کرد

      $photo_path = "storage/photos/".auth()->user()->id;   
        $file_path = "storage/files/".auth()->user()->id;
        $directory_size =  $this->folderSize($photo_path) + $this->folderSize($file_path);

            if ($directory_size > 30000) {
                return $this->error('file-size', ['max' => 30000]);
            }

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام