مشکل اپلود عکس در لاراول ۶

- 1 هفته پیش
توسط فرشاد زاد آپدیت شد
فرشاد زاد ( 250 تجربه )
1 هفته پیش
تخصص : برنامه نویسی

با سلام من ی مشکل در اپلود عکس در لاراول ۶ دارم . در ورژن های قبلی لاراول این مشکل نداشتم در لاراول ۶ این مشکل دارم
موقع اپلود این خطا رو میده
The "/tmp/phpRP3ebC" file does not exist or is not readable.
عکس اپلود میشه در پوشه .

محمدشیرکوند ( 1295 تجربه )
1 هفته پیش
تخصص : طراح رابط کاربری، برنامه نویس وب و اندروید

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

فرشاد زاد ( 250 تجربه )
1 هفته پیش
تخصص : برنامه نویسی

public function upload($image){

    $file_name = time()."-".$image->getClientOriginalExtension();
    $year = Carbon::now()->year;
    $month = Carbon::now()->month;
    $path = public_path("/uploads/users/$year/$month/");
    $image->move($path,$file_name);
    return "/uploads/users/$year/$month/".$file_name;
}

@mhmd.dev

فرشاد زاد ( 250 تجربه )
1 هفته پیش
تخصص : برنامه نویسی

@hesammousavi
مشکل از چی میتونه باشه؟؟

حسام موسوی ( 207394 تجربه )
1 هفته پیش
تخصص : طراح و برنامه نویس

ورژن php رو چک کنید و اگر احتمالا بخاطر اینکه لاراول 6 ورژن php رو افزایش دادید ایا تنظیمات مربوطه رو هم درست کردید ؟
و اینکه ایا یک ورژن پایین‌تر رو اگر نصب کنید مشکلی نداره ؟

فرشاد زاد ( 250 تجربه )
1 هفته پیش
تخصص : برنامه نویسی

ورژن PHP 7.2.19
تنظیمات مربوط به کجا؟؟
تو لارول ۵.۸ به درستی کار میکنه . فقط تو لاراول ۶ این بهم میده .
@hesammousavi

علی بیات ( 193487 تجربه )
1 هفته پیش
تخصص : توسعه دهنده ارشد وب

درود

کدهای قسمت آپلود شما مشکلی ندارند. میمونه ۱ مورد:
شما آرگومان اول یا همون image$ رو به چه صورتی بدست میارید و به متد upload پاس میدید؟

چنانچه از Input Facade استفاده می‌کنید احتمالا مشکل از همین مورده.
طبق مستندات لاراول ۶ چون این فِساد تکرار فساد Request بوده حذف شده ..

The Input facade, which was primarily a duplicate of the Request facade, has been removed. If you are using the Input::get method, you should now call the Request::input method. All other calls to the Input facade may simply be updated to use the Request facade.

https://laravel.com/docs/6.x/upgrade#the-input-facade

پس اگر در کدتون هر رفرنسی به کد های زیر هست:

Input::get('field')
Input::file('image')
// یا هر متد دیگه که از این فساد استفاده میکنه.

باید این موارد رو تغییر بدید و بجاش از کلاس "Illuminate\Http\Request" و یا از هلپر ()request استفاده کنید.. مثلا برای گزینه فایل:

$image = $request->file('image');
و یا
$image = $request->image;

علاوه بر ساده تر شدن کار برای دریافت آدرس و پسوند فایل به متد هایی زیر هم دسترسی دارید:

$path = $request->photo->path();

$extension = $request->photo->extension();

چک برای صحت انجام آپلود:

if ($request->file('image')->isValid()) {
    // file is uploaded and available
}

علاوه بر این متد file در کلاس Request در واقع instance ی از کلاس "Illuminate\Http\UploadedFile" رو بر میگردونه که این کلاس دسترسی به متدهای بیشتری رو برای ما ممکن میکنه. کلاس UploadedFile در واقع مربوط به پکیج HttpFoundation فریم‌ورک سیمفونی هست که لاراول هم ازش استفاده میکنه. در لینک زیر میتونید سایر متدهای موجود رو بررسی کنید:
https://github.com/symfony/symfony/blob/3.0/src/Symfony/Component/HttpFoundation/File/UploadedFile.php

موفق باشید

فرشاد زاد ( 250 تجربه )
1 هفته پیش
تخصص : برنامه نویسی

@ali.bayat

    $file = $request->file('image');
    $image = $this->upload($file);
    auth()->user()->articles()->create(array_merge($request->all(),["image"=>$image]));

اینم کد های ارگومان تابع . از هلپر فانکشن request() استفاده کردم مشکل حل نشد . ولی عکس دخیره میشه تو پوشه ولی این خطا رو میده اجازه نمیده تو دیتایس اینسرت کنه . ورژن php به ۷.۳ تغیر دادم بازم حل نشد
خطا اینه
The "/tmp/phpgqnRgk" file does not exist or is not readable.
http://s4.picofile.com/file/8374947918/20191011_184532.jpg

برای ارسال پاسخ باید وارد سایت شوید