میلاد بسحاق
5 سال پیش توسط میلاد بسحاق مطرح شد
25 پاسخ

خطای آپلود فایل در لاراول پس از آپلود روی هاست

با سلام
بنده روی هاست طبق آموزش های جناب موسوی سایت رو آپلود کردم
سایت به درستی کار میکنه، و اینکه حتی اگر فرمی رو هم بخوام داخل سایت ذخیره کنم، به درستی داخل دیتابیس ذخیره میشه

ولی وقتی میخوام فایلی رو آپلود کنم، قسمت validation فرم این خطار رو برمیگردونه (داخل لوکال هاست فایل ها به درستی آپلود میشن) :
cant upload icon file
از move() برای آپلود استفاده میکنم

داخل نت که سرچ کردم، دلیلش هم تغییر مسیر پوشه public هست
هر کاری کردم و هر آموزشی رو هم انجام دادم، ولی انجام نشد

نسخه لاراول هم 5.7 هست

ممنون میشم مثل همیشه راهنمایی کنید

@ashkannazari248
@masoudproton
@milad
@ali.bayat
@Alimotreb
@hesammousavi
@endworld
@code2code
@khanzadimahdi
@info.aligraph
@SeyedMH.Mosavi


ثبت پرسش جدید
اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 5 سال پیش آپدیت شد
1

توی validation فایل چی نوشتید؟


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@ashkannazari248
ولیدیشن درسته
اینکه فایل از نوع jpg, ... و سایز عکس رو

داخل لوکال هاست درست کار میکنه


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

از دیسک public استفاده میکنید یا Local?


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش آپدیت شد
1

سلام
@miladboshaghh

از DISK public استفاده کنید

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

                $filename = $file->getClientOriginalName();
                $filename = time() . '-' . md5(time()) . '.' . $ext;
                $file->move('Attach-Files', $filename);
                $selectfile = 'Attach-Files\\' . $filename;

اینطوری هم توی مسیر public ذخیره میشه!


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@ali.bayat

والا اسم روش رو نمی دونم
اطلاعات داخل پوشه public ذخیره می شدن
بعد از اینکه move() میشدن


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb
تشکر
میشه بیشتر توضیح بدین؟ آخه کد خودمم همین شکل هستش


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb
در مورد همین DISC Public


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام مجدد

@miladboshaghh

این قسمت رو بخونید

https://laravel.com/docs/5.8/filesystem


میلاد بسحاق
@miladboshagh 5 سال پیش آپدیت شد
0

@Alimotreb
من موضوعی که گفتید رو انجام دادم باز نشد
میشه بهتون دسترسی بدم لطف کنید ی نگاه بندازین؟

نمونه کد ذخیره کردن بنده اینه


    {
        $this->validate(request(), [
            'username' => 'required|unique:users',
            'email' => 'required|unique:users',
            'mobile' => 'unique:users',
            'password' => 'required',
            'icon' => 'image|mimes:jpeg,png,jpg,gif|max:2048',
        ], [
            'username.required' => 'وارد کردن نام کاربری الزامی می باشد.',
            'username.unique' => 'این نام کاربری از قبل ایجاد شده است.',
            'email.required' => 'وارد کردن ایمیل الزامی می باشد.',
            'email.unique' => 'این ایمیل از قبل ثبت گردیده است.',
            'mobile.unique' => 'این موبایل از قبل ثبت گردیده است.',
            'password.required' => 'وارد کردن رمزعبور الزامی می باشد.',
            'icon.mimes' => 'فرمت تصویر وارد شده مجاز نمی باشد. ( فرمت های مجاز: jpeg , jpg , png , gif )',
            'icon.image' => 'فایل انتخابی باید از نوع عکس باشد.',
            'icon.max' => 'حداکثر حجم تصویر 2 مگابایت می باشد.',
        ]);

        $icon = '';
        if (request()->hasFile('icon')) {
            $icon_name = 'icon-' . time() . date("Y-m-d") . '.' . request()->file('icon')->getClientOriginalExtension();
            if (request()->file('icon')->move('upload/users/icons', $icon_name)) {
                $icon = $icon_name;
            }
        }

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


اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 5 سال پیش مطرح شد
1

سلام. ادرس ذخیره فایل رو از ریشه سایت بدید. مثل پایین

if (request()->file('icon')->move('home2/myUsername/public_html/img/upload/users/icons', $icon_name)) {
                $icon = $icon_name;
            }

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


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@ashkannazari248
تشکر

انجام دادم، ولی باز خطا میده


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb
ممنون میشم کدهارو ی چک بکنی


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@miladboshaghh

ببینید شما مرحله آپلود رو اصلا تو شرط گذاشتید
بیایید به این شکل عمل کنید
مرحله ولیدیشن رو بردارید در مرحله اول ، روی فایل ولیدیشن نزنید
مرحله if رو هم بردارید
صاف و ساده
فایل رو بگیرید آپلود کنید
ببینید بازم آپلود میشه یا نه
بعد اگر آپلود شد
ولیدیشن روش بزارید و تست کنید
بعد از اون اگر آپلود شد
بعد شروط مختلف بزارید که اگر آپلود شد فلان شه و ....
پیچیده کردید کد هاتون رو
من خطایی نمیبینم تو کد ها ، ولی احتمالا تو عملکرد اختلالی داره!
مراحلی رو که گفتم برید جلو
خط به خط مشکلی بود dd() بگیرید
مشکلتون حل میشه


میلاد بسحاق
@miladboshagh 5 سال پیش آپدیت شد
0

@Alimotreb
تشکر

دقیقا این کارهارو کردم
ولی وقتی که فقط میخوام فایل رو بگیرم و آپلود کنم، این خطا رو میده

File could not be uploaded: missing temporary directory.

حتی داخل AppserviceProvider این کد رو هم بعدش قرار دادم، خطا داد

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

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@miladboshaghh

نیازی به این نیست

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

بدون این باید اوکی باشه.


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb
خوب من بدون این هم زدم

این خطا رو میده

File could not be uploaded: missing temporary directory.

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام مجدد
@miladboshaghh

دسترسی پوشه public_html روی چند هست روی سرور و هاستتون؟
755؟


میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb

ارادت

بله 755 هست
اینم اسکرین شات

http://8upload.ir/uploads/f678193180.png

میلاد بسحاق
@miladboshagh 5 سال پیش مطرح شد
0

@Alimotreb

داداش میشه دسترسی بهت بدم ی نگاه بندازی؟
ممنون میشم


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
-1

سلام
@miladboshaghh

777 کنید تست بگیرید مجدد


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

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