راکت
حل شده

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

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 میشن.

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

ثبت پرسش جدید

پاسخ‌ها

5
Armin Rahmati
Armin Rahmati
@arminrahmati999
بهترین پاسخ

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

\app\Providers\AppServiceProvider

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

$this->app->bind('path.public', function() {
        return base_path('../public_html');
    });
رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

سلام
منم این مشکل رو داشتم قبله باید داخل فایل 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
@arminrahmati999

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

شاید پاسخ شما همین‌جا باشد

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

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

علیرضا مه آبادی
علیرضا مه آبادی
@aliasgharkashani1379

تخصص: در حال یادگیری لاراول

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

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

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