با سلام
بنده روی هاست طبق آموزش های جناب موسوی سایت رو آپلود کردم
سایت به درستی کار میکنه، و اینکه حتی اگر فرمی رو هم بخوام داخل سایت ذخیره کنم، به درستی داخل دیتابیس ذخیره میشه
ولی وقتی میخوام فایلی رو آپلود کنم، قسمت validation فرم این خطار رو برمیگردونه (داخل لوکال هاست فایل ها به درستی آپلود میشن) :
cant upload icon file
از move() برای آپلود استفاده میکنم
داخل نت که سرچ کردم، دلیلش هم تغییر مسیر پوشه public هست
هر کاری کردم و هر آموزشی رو هم انجام دادم، ولی انجام نشد
نسخه لاراول هم 5.7 هست
ممنون میشم مثل همیشه راهنمایی کنید
@ashkannazari248
@masoudproton
@milad
@ali.bayat
@Alimotreb
@hesammousavi
@endworld
@code2code
@khanzadimahdi
@info.aligraph
@SeyedMH.Mosavi
@ashkannazari248
ولیدیشن درسته
اینکه فایل از نوع jpg, ... و سایز عکس رو
داخل لوکال هاست درست کار میکنه
سلام
@miladboshaghh
از DISK public استفاده کنید
ولی به این روش هم میتونید کار کنید یه نمونه
$filename = $file->getClientOriginalName();
$filename = time() . '-' . md5(time()) . '.' . $ext;
$file->move('Attach-Files', $filename);
$selectfile = 'Attach-Files\\' . $filename;
اینطوری هم توی مسیر public ذخیره میشه!
والا اسم روش رو نمی دونم
اطلاعات داخل پوشه public ذخیره می شدن
بعد از اینکه move() میشدن
@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 ذخیره میکنه
سلام. ادرس ذخیره فایل رو از ریشه سایت بدید. مثل پایین
if (request()->file('icon')->move('home2/myUsername/public_html/img/upload/users/icons', $icon_name)) {
$icon = $icon_name;
}
منم یه بار اینجوری تو لوکال ادرس داده بودم و کار میکرد اما رو هاست به مشکل میخورد با ادرس دادن از ریشه حل شد
سلام
@miladboshaghh
ببینید شما مرحله آپلود رو اصلا تو شرط گذاشتید
بیایید به این شکل عمل کنید
مرحله ولیدیشن رو بردارید در مرحله اول ، روی فایل ولیدیشن نزنید
مرحله if رو هم بردارید
صاف و ساده
فایل رو بگیرید آپلود کنید
ببینید بازم آپلود میشه یا نه
بعد اگر آپلود شد
ولیدیشن روش بزارید و تست کنید
بعد از اون اگر آپلود شد
بعد شروط مختلف بزارید که اگر آپلود شد فلان شه و ....
پیچیده کردید کد هاتون رو
من خطایی نمیبینم تو کد ها ، ولی احتمالا تو عملکرد اختلالی داره!
مراحلی رو که گفتم برید جلو
خط به خط مشکلی بود dd() بگیرید
مشکلتون حل میشه
@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');
});
}
سلام
@miladboshaghh
نیازی به این نیست
cpublic function register()
{ $this->app->bind('path.public', function() {
return realpath(base_path().'/public_html');
});
}
بدون این باید اوکی باشه.
@Alimotreb
خوب من بدون این هم زدم
این خطا رو میده
File could not be uploaded: missing temporary directory.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟