آپلود تصویر با کد گذاری base64 در لاراول

آپلود تصویر با کد گذاری base64 در لاراول

در پروژهایی که نیاز به api وجود دارد دوستان اندورید کار نیاز به آپلود تصاویر با کدگذاری base64 دارند با کد گذاری base64 به راحتی می توانند تصاویر را به صورت یک رشته از کاراکتر ارسال کنند. در این مقاله اینکار رو در لاراول انجام خواهیم داد

زمان مطالعه: 3 دقیقه
بازدید: 1070
پرسش و پاسخ: 0

اگر می خواهید نمونه تصاویر base64 بسازید لیست سایتهای زیر جزو بهترین سایتها برای تبدیل تصاویر به کدگذاری 64 بیتی هستند

  • سایت base64-image
  • سایت base64.guru
  • سایت base64decode.net

همه سایت های یاد شده قابلیت encode و decode را دارا می باشند.

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

کد زیر کامل هستش سعی کردم برای هر خط توضیحات رو کامل بگم و این متد رو من post در نظرگرفته بودم این متد رو تو یه کنترلر داخل پروژه لاراولی نوشته بودم و اینجا با یه تغییراتی نوشتم لازم ندیدم اعتبارسنجی لاراول رو باز اینجا بیارم دوستان خودشون بلدن و انجام میدن 

 if(isset($request->avatar) && $request->avatar != '') // اول چک کردیم که حتما مقداری داشته باشه
    {
        $img = $request->avatar; کد ارسالی شما مثلا با اسم آواتار بوده که اینجا میزاریمش تو متغیر
     
        $img = str_replace('data:image/jpeg;base64,', '', $img);
    $img = str_replace('data:image/png;base64,', '', $img);
        $img = str_replace('data:image/jpg;base64,', '', $img);
        $img = str_replace('data:image/gif;base64,', '', $img);
        $img = str_replace(' ', '+', $img);
        $image = base64_decode($img); // تا اینجا کدهای اضافی رو پاک کردیم از رشته دریافتی
        $encodedImgString = explode(',', $request->avatar, 2)[1]; از اینجا به بعد باز رشته اولیه رو برای پیدا کردن پسوند تصویر می گردیم
        $decodedImgString = base64_decode($encodedImgString);
        $info = getimagesizefromstring($decodedImgString);
        if(in_array($ext = substr($info['mime'], 6),['png', 'gif', 'jpeg','jpg'])) // اینجا چک کردیم تصویر یکی از این پسوندها باشه
        {
            $destination= base_path().'/public/upload/em_avatar/'.date('Y').'/'.date('m');// یک مسیر تو پروژه برای آپلود تعیین کردیم
            if(!is_dir($destination))
            {
                mkdir($destination,0777,true);
            }// این شرط برای ساخت مسیرمون هستش اگه نبود
           
            $destination=$destination.'/';آخر مسیر یه اسلش اضافه می کنیم 
            $filename=rand(1111111,99999999); // یه اسم رندوم برای تصویر ساختیم
            file_put_contents($destination.$filename.'.'.substr($info['mime'], 6),$image); // تصویر رو که بالا دیکود کرده بودیم تو مسیر تعیین شده + اسم جدید + پسوند تصویر که بالا تشخیص دادیم
          // تموم شده به این راحتی آپلود کردیم
        }
    }

این کل چیزی بود که خیلیا ازش ترس دارن و تو پروژه ها خیلی تاکید میکنن که حتما باید باشه!!! تو قسمت پرسش و پاسخ سوالاتتون رو جواب میدم 

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده