راکت
Armin Rahmati
Armin Rahmati
5 سال پیش توسط Armin Rahmati مطرح شد
حل
5 پاسخ

نمایش ندادن عکس در هاست

سلام دوستان.
من برای ذخیره سازی عکس به صورت زیر عمل میکنم.

protected function uploadImages($file)
    {
        if (file_exists($file)) {
            $year = Carbon::now()->year;
            $imagePath = "/upload/images/{$year}/";
            $filename = $file->getClientOriginalName();

            $file = $file->move(public_path($imagePath), $filename);
            $url['images'] = $this->resize($file->getRealPath(), $imagePath, $filename);

            return $url;
        }
    }

به صورت لوکال به درستی نمایش داده میشه ولی رو هاست آپلود میکنم نمیشناسه عکسو.

در واقع بر روی هاست عکس ها وارد فولدر public_html نمیشن و داخل خود فولدر پروژه وارد فولدر public میشن.

باید چیکار کنم تا درست بشه؟


ثبت پرسش جدید
Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
1

مشکل حل شد و اینو میذارم واسه دوستانی که شاید این مشکل رو داشته باشن.
به مسیر زیر برین

\app\Providers\AppServiceProvider

و در متد register، دستور زیر رو قرار بدن.

$this->app->bind('path.public', function() {
        return base_path('../public_html');
    });

رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

سلام
منم این مشکل رو داشتم قبله باید داخل فایل env متغیر debug رو false کنی بعد از کد من استفاده کنی

 if(!env("APP_DEBUG")){
            $this->app->bind('path.public', function () {
                return realpath(base_path() . '/../public_html'); // پوشه public من 1 مسیر عقب تر بود. تو ببین چی میخوای جای گزینش کنی
            });
        }

کد بالا رو بذار توی فایل AppServiceProvider داخل تابع register


چند تا توصیه :

شاید هم من خیلی خود خواه هستم.

  1. عکس رو هیچوقت resize نکنید چون کیفیت رو از دست میده شاید اطلاعات مهمی داشته باشه که ممکنه crop بشه
  2. توی نمایش هم هیچوقت resize نکنید.
  3. بجای Carbon هم از Verta استفاده کنی بهتره چون قابلیت تبدیل به شمسی هم داره.
  4. برای آپلود عکس هم سعی کنی اسم فایل رو عوض کنی من از کد زیر استفاده میکنم.
    $imageName = time() . Auth::user()->name . "." . $request->img->getClientOriginalExtension();
    $request->img->move(public_path('upload/'), $imageName);

Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
1

مشکل حل شد و اینو میذارم واسه دوستانی که شاید این مشکل رو داشته باشن.
به مسیر زیر برین

\app\Providers\AppServiceProvider

و در متد register، دستور زیر رو قرار بدن.

$this->app->bind('path.public', function() {
        return base_path('../public_html');
    });

Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
0

@Rp76
دمت گرم رضا جون ولی نیازی نیست اینقدر طولانی باشه، با کدی که بالا گذاشتم حل شد.


رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
0

درسته اما اگر روی سیستم deploy میکنی و بعد انتقال میدی با کد من راحت تری
فقط کافیه فایل env رو ادیت کنی تا از پوشه public به public_html نقل مکان کنه


علیرضا مه آبادی
علیرضا مه آبادی
تخصص :در حال یادگیری لاراول
@aliasgharkashani13793 سال پیشمطرح شد
0

داداش درود بهت یک هفته لنگ بودم


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

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