فرشاد زاد
5 سال پیش توسط فرشاد زاد مطرح شد
7 پاسخ

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

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


ثبت پرسش جدید
محمد
تخصص : طراح رابط کاربری، برنامه نویس...
@mhmd.dev 5 سال پیش مطرح شد
0

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


فرشاد زاد
تخصص : برنامه نویسی
@shahindej7 5 سال پیش آپدیت شد
0

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


فرشاد زاد
تخصص : برنامه نویسی
@shahindej7 5 سال پیش مطرح شد
0

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


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

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


فرشاد زاد
تخصص : برنامه نویسی
@shahindej7 5 سال پیش مطرح شد
0

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


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

درود

کدهای قسمت آپلود شما مشکلی ندارند. میمونه ۱ مورد:
شما آرگومان اول یا همون 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

موفق باشید


فرشاد زاد
تخصص : برنامه نویسی
@shahindej7 5 سال پیش مطرح شد
0

@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


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

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