سلام برای آپلود کردن فایل ها با حجم بالا(مثلا 500 مگا بایت) در لاراول چی کار باید کرد؟
بصورت خاص چند تا تنظیم خاص هست که باید در تنظیمات سرورتون و در فایل php.ini و همچنین فایل کانفیگ سرور بلاکتون انجام بدید. (ربطی به لاراول نداره)
یکش uploadmaxfilesize هست
دیگریش postmaxsize
که باید ماکزیممش رو مطابق با نیازتون مثلا 500MB تنظیم کنید.
همچنین یک مورد دیگه هم maxexecutiontime هست که حداکثر زمان اجرای دستور قبل از صدور ارور timeout رو مشخص میکنه که پیش فرضش اگر اشتباه نکنم 30 ثانیه هست و احتمالا 500 مگابایت به زمانی بیشتر از این نیاز داشته باشه.
post_max_size = 500M;
upload_max_filesize = 500M
...
و اما در خود لاراول هم متدی که برای آپلود استفاده میکنید مهم هست. برای فایل های بزرگ باید از streaming استفاده بشه که این کار بصورت اتومات اگر از متد put() استفاده کنید هندل میشه.
Storage::disk('local')->put('file.txt', 'Contents');
یک احتمالی هم وجود داره که با محدودیت RAM مواجه بشید در سمت سرور که یا باید تنظیماتش رو در php.ini دستکاری کنید یا منابع سرورتون رو تقویت کنید. ولی فکر کنم برای این قضیه هم یک سری پکیج های خاص وجود داره که میان فایل های بزرگ رو تکه تکه (chunk) میکنند تا این مشکل برطرف بشه.
لینک توضیحات بیشتر و تفصیلی:
https://www.sitepoint.com/upload-large-files-in-php/
https://stackoverflow.com/a/42896304/7080296
@vahiidrah
سلام.
باید کانفیگ های مربوط به آپلود رو در php.ini تنظیم کنید.
شاید پاسخ شما همینجا باشد