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

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

بهزاد میرزازاده بهزاد میرزازاده

زمان مطالعه

3 دقیقه

بازدید

321

پرسش و پاسخ

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

اگر می خواهید نمونه تصاویر 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); // تصویر رو که بالا دیکود کرده بودیم تو مسیر تعیین شده + اسم جدید + پسوند تصویر که بالا تشخیص دادیم
          // تموم شده به این راحتی آپلود کردیم
        }
    }

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