جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
Armin Rahmati
3 سال پیش توسط 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
@arminrahmati999 3 سال پیش مطرح شد
1

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

\app\Providers\AppServiceProvider

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

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

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
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
@arminrahmati999 3 سال پیش مطرح شد
1

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

\app\Providers\AppServiceProvider

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

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

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

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


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

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


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

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


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

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