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

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

سلام برای آپلود کردن فایل ها با حجم بالا(مثلا 500 مگا بایت) در لاراول چی کار باید کرد؟


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
0

بصورت خاص چند تا تنظیم خاص هست که باید در تنظیمات سرورتون و در فایل 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


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@vahiidrah
سلام.
باید کانفیگ های مربوط به آپلود رو در php.ini تنظیم کنید.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
0

بصورت خاص چند تا تنظیم خاص هست که باید در تنظیمات سرورتون و در فایل 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


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

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