راکت

نحوه ویرایش عکس محصول در متد update

4 پاسخ

درود بر مهندسین عزیز 🌼 بنده برای ویرایش عکس محصول ویرایش انجام میشه فقط می خوام عکس قبلی هم پاک بشه که نمی دونم چه کار کنم.
این بخش آپدیت هست.

 public function update(Request $request, Product $product)
    {
        $data=$request->validate([
            'description'=>'required',
            'price'=>'required',
            'image'=>['required','mimes:png,jpg,jpeg','max:5120']
        ]);
        $file=$request->file('image');
        $file_path='/images/'.now()->year.'/'.now()->month.'/';
        $file->move(public_path($file_path),$file->getClientOriginalName());
        $data['image']=$file_path.$file->getClientOriginalName();
    }

ممنوم اگر راهنماییم کنید🙏

ثبت پرسش جدید

پاسخ‌ها

4
ممدو
ممدو
@mamado

تخصص: در حال یادگیری ...

از فساد file استفاده کن و اول چک کن که در پوشه مد نظر وجود داره ، و بعد اونو حذف کن

    $image_path = "/images/filename.ext";  // آدرس عکس در پوشه
if(File::exists($image_path)) {
    File::delete($image_path);
}
علیرضا مه آبادی
علیرضا مه آبادی
@aliasgharkashani1379

تخصص: در حال یادگیری لاراول

@mamado مهندس از این روش انجام دادم نشد.

 $data=$request->validate([
            'description'=>'required',
            'price'=>'required',
            'image'=>['required','mimes:png,jpg,jpeg','max:5120']
        ]);
        $file=$request->file('image');
        $file_delete='/images/'.now()->year.'/'.now()->month.'/'.$file->getClientOriginalName();
        if (File::exists($file_delete)){
            File::delete($file_delete);
        }

و حتی از این راه

   $data=$request->validate([
            'description'=>'required',
            'price'=>'required',
            'image'=>['required','mimes:png,jpg,jpeg','max:5120']
        ]);
        $file_path=$product->image;
        $file_delete='/images/'.now()->year.'/'.now()->month.'/'.$file_path;
        if (File::exists($file_delete)){
            File::delete($file_delete);
        }

آدرس قرار گیری عکس ها در پوشه public درست هست.

شاید پاسخ شما همین‌جا باشد

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@aliasgharkashani1379
داداش داری اشتب میزنی :))

اگر اسم تصویر را به همراه آدرسش ذخیره کردی که اینجوری باید حذفش کنی

$file_path=$product->image;
        if (File::exists($file_path)){
            File::delete($file_path);
        }

اگه فقط اسم تصویر را ذخیره کردی باید بای AllFiles ببینی کجاست و توی کدوم پوشه هست بعدش حذفش کنی
شما داری توی متد آپدیت موقع حذف ماه و سال الانو برمیگردونی / خب ممکنه موقعی که تصویرو ذخیره کردی 6 ماه پیش بوده :)) چجوری بدبخت بفهمه :D

امیر حسین شکوهی
امیر حسین شکوهی
@amirshokoohi

تخصص: web developer

سلام
پیشنهاد میکنم یک ستون به جدول اضافه کنی تحت عنوان address و file path رو توش ذخیره کنی تو متد store
سپس تو متد آپدیت به آدرست دسترسی داری و میتونی از کد زیر استفاده کنی

if(is_dir($product->address)){
            File::deleteDirectory($product->address);
        }

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

public function update(Request $request, Product $product)

    {

        $data=$request->validate([

            'description'=>'required',

            'price'=>'required',

            'image'=>['required','mimes:png,jpg,jpeg','max:5120']

        ]);

       if(is_dir($product->address)){
            File::deleteDirectory($product->address);
        }

    }

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

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